最佳答案
我试图从我的 C # windows 应用程序中调用一个存储过程。该存储过程在 SQLServer2008的本地实例上运行。我能够调用存储过程,但无法从存储过程中检索值。这个存储过程应该返回序列中的下一个数字。我已经在网上做了研究,我看到的所有网站都指出这个解决方案是有效的。
存储过程代码:
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
检索具有相同结果的返回值。我错过了什么
存储过程的返回值是多少? 如果需要更多信息,请告诉我。