[英]Stored procedure returns null as output parameter
我有stored procedure
,它在 MS SQL 管理工作室中很好用。
当我尝试在 VS 行中使用它时返回正常,但输出参数的值为NULL 。
SqlCommand cmd = new SqlCommand("proc_name", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter("@p_SomeVal", SqlDbType.Int));
cmd.Parameters["@p_SomeVal"].Direction = ParameterDirection.Output;
rdr = cmd.ExecuteReader();
//...process rows...
if (cmd.Parameters["@p_SomeVal"].Value != null)
SomeVal = (int)cmd.Parameters["@p_SomeVal"].Value;
cmd.ExecuteNonQuery(); 有同样的结果。
USE [db_name]
GO
DECLARE @return_value int,
@p_SomeValue int
EXEC @return_value = [dbo].[Proc_name]
@p_InputVal = N'aa',
@p_SomeValue = @p_SomeValue OUTPUT
SELECT @p_SomeValue as N'p_SomeValue'
SELECT 'Return Value' = @return_value
GO
SqlCommand cmd = new SqlCommand("proc_name", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter("@p_SomeVal", SqlDbType.Int));
cmd.Parameters["@p_SomeVal"].Direction = ParameterDirection.Output;
rdr = cmd.ExecuteReader();
//...process rows...
rdr.Close();
if (cmd.Parameters["@p_SomeVal"].Value != null)
SomeVal = (int)cmd.Parameters["@p_SomeVal"].Value;
处理行后,我添加了rdr.Close();
并且工作正常。
Salaam,您可以检查输出是否为空并像这样进行转换。
returnedSQLParameter.Value != DBNull.Value? (int)returnedSQLParameter.Value : 0;
因为当输出从存储过程发送NULL
时它返回DBNull.value
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.