我正在尝试从我的C# Windows应用程序调用存储过程。该存储过程运行在本地安装的SQL Server 2008实例上。我可以调用存储过程,但是无法从存储过程中检索返回的值。该存储过程应该返回序列中的下一个数字。我已经在网上做了研究,所有我看到的网站都指向这个解决方案可行。
存储过程代码:
ALTER procedure [dbo].[usp_GetNewSeqVal]
@SeqName nvarchar(255)
as
begin
declare @NewSeqVal int
set NOCOUNT ON
update AllSequences
set @NewSeqVal = CurrVal = CurrVal+Incr
where SeqName = @SeqName
if @@rowcount = 0 begin
print 'Sequence does not exist'
return
end
return @NewSeqVal
end
调用存储过程的代码:
SqlConnection conn = new SqlConnection(getConnectionString());
conn.Open();
SqlCommand cmd = new SqlCommand(parameterStatement.getQuery(), conn);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter param = new SqlParameter();
param = cmd.Parameters.Add("@SeqName", SqlDbType.NVarChar);
param.Direction = ParameterDirection.Input;
param.Value = "SeqName";
SqlDataReader reader = cmd.ExecuteReader();
我还尝试使用 DataSet
获取返回值,但结果相同。我漏掉了什么才能从存储过程中获取返回值?如果需要更多信息,请告诉我。
@ReturnVal
吗? - muttley91OUTPUT
参数或结果集来实现这个目的。 - Dan Guzman