I have stored procedure
, which works great in MS SQL management studio.
我有存储过程,它在MS SQL管理工作室中运行良好。
When I try to use it in VS rows returns fine, but value of output parameters is NULL.
当我尝试在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(); Has the same result.
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
1 个解决方案
#1
13
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;
After procesing rows I added rdr.Close();
and worked fine.
处理完行后,我添加了rdr.Close();并且工作得很好。
#1
13
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;
After procesing rows I added rdr.Close();
and worked fine.
处理完行后,我添加了rdr.Close();并且工作得很好。