如何获取存储过程中的反回值?

来源:互联网 发布:linux apache ab下载 编辑:程序博客网 时间:2024/06/04 01:30

有下面这样一个存储过程:

  CREATE PROCEDURE dbo.InsertST

     @name nvarchar(32)
AS
     Insert ST (name)
     SELECT @NAME
     --返回主键值
     RETURN @@IDENTITY
现在想在程序中,获取这个存储过程的返回值,来得到当前插入记录的主键,该如何做?
对于想获取当前插入记录的主键的方法无外呼两种情况,1.把生成的主键值作为存储过程的一个输出参数,这个很容易,2. 把生成的主键作为存储过程的反回值,现在的情况属于第二种。
在c#的中,当我们要给存储过程传递参数的时候,默认的输入参数,如果要指定输出参数,则必须设置ParameterDirection参数,而该参数有四种情况:
 
ParameterDirection.Input;                     输入参数
ParameterDirection.InputOutput;         输入输出参数
ParameterDirection.Output;                  输出参数
ParameterDirection.ReturnValue;       返回值
我们知道了如何通过输出参数或者主键,到这而应该知道了如何通过返回值获取主键值了吧,与输入参数不同的就是在这里设置参数的值为ReturnValue.
                ..........
               SqlCommand cmd = new SqlCommand();
                cmd.Connection = db.m_sqlConn;
                cmd.CommandText = "[DeleteUseridByID]";
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.Add(new SqlParameter("@userid", SqlDbType.Int, 0));
                SqlParameter rtnval = cmd.Parameters.Add("rval",SqlDbType.Int,0);
                rtnval.Direction = ParameterDirection.ReturnValue;
               cmd.Parameters[0].Value = 10;
               int nRes = cmd.ExecuteNonQuery();
               int rrr = int.Parse(rtnval.Value.ToString());
               ..................