c# 中输出参数为 returns -1 的存储过程
Stored procedure with output parameters returns -1 in c#
我有一个简单的 c# 应用程序,它使用 Entity Framework 5.0
并且应该调用带有输出参数的存储过程。问题是它不起作用,而是 returns -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
.
有人知道我做错了什么吗?
您查询的参数必须带有OUTPUT关键字
var noOutput = context.Database.ExecuteSqlCommand("EXEC my_sp_name @operatorID OUTPUT, @operatorCode OUTPUT", parameters.ToArray());
勾选"operatorCode.Value"属性。执行后会有结果。
如果没有尝试使用CommandType.StoredProcedure,然后使用存储过程名称和参数执行命令。你会得到输出
我有一个简单的 c# 应用程序,它使用 Entity Framework 5.0
并且应该调用带有输出参数的存储过程。问题是它不起作用,而是 returns -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
.
有人知道我做错了什么吗?
您查询的参数必须带有OUTPUT关键字
var noOutput = context.Database.ExecuteSqlCommand("EXEC my_sp_name @operatorID OUTPUT, @operatorCode OUTPUT", parameters.ToArray());
勾选"operatorCode.Value"属性。执行后会有结果。
如果没有尝试使用CommandType.StoredProcedure,然后使用存储过程名称和参数执行命令。你会得到输出