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

本文关键字:返回 存储过程 输出 参数 | 更新日期: 2023-09-27 18:19:44

我有一个简单的c#应用程序,它使用Entity Framework 5.0,并且应该使用输出参数调用存储过程。问题是它不起作用,而是返回-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

有人知道我做错了什么吗?

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

查询中的参数必须带有OUTPUT关键字

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

检查"operatorCode.Value"属性。执行后会有结果。

如果没有,请尝试使用CommandType.StoredProcedure,然后使用存储过程名称和参数执行该命令。您将得到输出