我正在使用Entity Framework。我创建了一个名为Customer的实体对象,并添加了我的存储过程。我的存储过程包含另外两个存储过程,它在输出参数中返回一些字符串。并且我在主存储过程中连接两个存储过程的输出参数值。主存储过程也返回输出参数中的结果字符串。我还为主存储过程创建了一个函数import来返回连接的字符串。当我运行我的应用程序时,我得到“商店数据提供程序返回的数据读取器没有足够的列用于请求的查询。”我在第一个和第二个程序中没有select语句。让我知道如何返回主存储过程的输出参数值。
在下方查找更多信息。
Create Procedure MainProcedure
@Id int,
@MainResult nvarchar(max) output
AS
Begin
declare @firstResult nvarchar(max)
declare @secondResult nVarchar(max)
declare @MainResult nVarchar(max)
Exec FirstSP @Id,@firstResult Output
Exec SecondSP @Id,@secondResult Output
Set @MainResult=@firstResult+@secondResult
End
实体代码看起来像
System.Data.Objects.ObjectResult<string> resultList = null;
var OutputParamter =new ObjectParameter("MainResult",typeof(string));
resultList = ent.MainProcedure(ID, OutputParamter);
答案 0 :(得分:0)
我看不到您的存储过程可以为您提供更多帮助,但是当我使用存储过程并试图通过“ return”语句(如
)获取返回值时,此错误就摆在我面前。IF EXISTS (SELECT * FROM Table)
return 0
这在sql服务器上可以正常工作,但在EF上却不能。
对我来说,解决方案是将select语句替换为return语句,
IF EXISTS (SELECT * FROM Table)
--return 0
select @OUTPUT=0
此link了解更多信息。