如何将值从动态 SQL 存储过程返回到实体框架? [英] How to return values from a dynamic SQL Stored Procedure to the Entity Framework?
问题描述
我有一个执行一些动态 SQL 的存储过程.我想在实体框架 4 中使用此存储过程,但是当我尝试创建复杂类型时,该过程不返回任何列.有什么办法可以强制它返回我的值并让实体框架接收它们?这是我想要做的一个非常简单的例子:
I have a Stored Procedure which executes some dynamic SQL. I want to use this Stored Procedure in entity framework 4, but when I try to create a complex type the procedure returns no columns. Is there any way I can force it to return my values and get the entity framework to receive them? Here is a much-simplified example of what I want to do:
CREATE PROCEDURE sp_calculatesalary(@EmployeeId as int)
begin
declare dynsql as varachar(500)
@dynsql='Select @Salary=Salary,@UserName=Username from employee
where EmployeeId='+cast(@EmployeeId as varchar)+ ''
exec(@dynsql)
select @Salary, @UserName
end
但这行不通.请帮帮我.基本上,我想使用存储过程来执行动态 SQL 并将值返回给实体框架.
But this does not work. Please help me out. Basically, I want to use a Stored Procedure to execute dynamic SQL and return the values to the entity framework.
推荐答案
如果你必须做动态查询,也许你可以考虑参数化 SQL:
Perhaps you could consider parameterized SQL, if you must do dynamic queries:
CREATE PROCEDURE sp_calculatesalary(@EmployeeId as int)
as
begin
declare @dynsql varchar(500)
declare @params nvarchar(500)
declare @salary money
declare @username varchar(50)
set @dynsql='Select @sal=Salary,@usernm=Username from employee where EmployeeId=@empID'
set @params='@empID int, @sal money OUTPUT, @usernm varchar(50) OUTPUT'
exec sp_executesql @dynsql, @params, @empID=@EmployeeID, @sal=@salary OUTPUT, @usernm = @username OUTPUT
SELECT @salary, @username
end
这篇关于如何将值从动态 SQL 存储过程返回到实体框架?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!