比如说有这样一个添加操作,
public int Add(jm.Model.Sms_SendQueue model)
{
int rowsAffected;
SqlParameter[] parameters = {
new SqlParameter("@smsid", SqlDbType.BigInt,8),
new SqlParameter("@Sender", SqlDbType.NVarChar,50),
new SqlParameter("@receiver", SqlDbType.NVarChar,50)};
parameters[0].Direction = ParameterDirection.Output;
parameters[1].Value = model.Sender;
parameters[2].Value = model.Receiver;
DbHelperSQL.RunProcedure("AddNewSMS", parameters, out rowsAffected);
return (int)parameters[0].Value;public static int RunProcedure(string storedProcName, IDataParameter[] parameters, out int rowsAffected)
    {
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                int result;
                connection.Open();
                SqlCommand command = BuildIntCommand(connection, storedProcName, parameters);
                rowsAffected = command.ExecuteNonQuery();   //rowsAffected的结果是什么
                result = (int)command.Parameters["ReturnValue"].Value; 
                //Connection.Close();
                return result;
            }
        }存储过程是这样的
begin 
insert into dbo.Sms_SendQueue (Receiver,memo,flag,SmSType,NeedCardType,Re1,WorkTime)
values     (@Receiver,@memo,1,@SmSType,@NeedCardType,@Re1,getdate())
return @@IDENTITY
end然后我就搞糊涂了,到底执行这个存储过程中返回的是什么,是rowsAffected还是result还是smsid的值?

解决方案 »

  1.   

    rowsAffected的结果是什么?答:结果是执行T-SQL语句后影响的行数。
    存储过程中的 @smsid 参数应该是output类型的。
    你这个RunProcedure方法返回的结果应该是@smsid 这个参数的值。
      

  2.   


    谢谢,
    错误:形参 "@smsid" 未声明为 OUTPUT 参数,但传递进来的实参请求输出 是什么原因?
      

  3.   

    parameters[0].Direction = ParameterDirection.ReturnValue;返回值和输出参数是两码事...@@IDENTITY是ReturnValue...ps:你没有贴出存储过程声明部分无法知道有没有声明输出参数,另外参数数目似乎也不对...1楼纯忽悠...