带输出参数的存储过程在c#中返回-1

时间:2015-10-28 07:32:43

标签: c# sql-server entity-framework stored-procedures entity-framework-5

我有一个使用Entity Framework 5.0的简单c#应用程序,应该使用输出参数调用存储过程。问题是它不起作用,而是返回-1。

我看到的c#代码:

// Define the output paramaters
SqlParameter operatorID = new SqlParameter("@operatorID", SqlDbType.Int);
operatorID.Direction = ParameterDirection.Output;
SqlParameter operatorCode = new SqlParameter("@operatorCode", SqlDbType.Int);
operatorCode.Direction = ParameterDirection.Output;

var parameters = new List<object>();
parameters.Add(operatorID);
parameters.Add(operatorCode);

var noOutput = context.Database.ExecuteSqlCommand("EXEC my_sp_name @operatorID, @operatorCode", parameters.ToArray());

存储过程如下所示:

CREATE PROCEDURE [dbo].[my_sp_name] 
( 
     @operatorID        int             OUTPUT 
    ,@operatorCode      int             OUTPUT
 )
AS
    SET @operatorID = 123

我知道它没有意义,但它只是为了测试。

执行c#代码后的问题是noOutput值为-1且operatorID值为空,我希望它为123。< / p>

有人知道我做错了吗?

2 个答案:

答案 0 :(得分:5)

查询中的参数必须使用 OUTPUT 关键字

var noOutput = context.Database.ExecuteSqlCommand("EXEC my_sp_name @operatorID OUTPUT, @operatorCode OUTPUT", parameters.ToArray());

答案 1 :(得分:0)

检查&#34; operatorCode.Value&#34; 属性。结果将在执行后出现。

如果不尝试使用 CommandType.StoredProcedure ,则使用存储过程名称和参数执行命令。你会得到输出

相关问题