且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

存储过程总是返回 0

更新时间:2023-01-12 17:12:08

我尝试了与您类似的代码,它按预期工作.
但是,在您的代码中有两次对 ExecuteNonQuery 的调用.

I tried a similar code like yours and it works as expected.
However, in your code there is a call to ExecuteNonQuery two times.

当第一次调用时,记录按预期插入,然后添加返回值的参数并再次执行命令.但是现在记录存在并且存储过程总是落在 else 块中,因此总是返回零.

When the first call is made the record is inserted as expected, then you add the parameter for the return value and execute again the command. But now the record exists and the stored procedure falls always in the else block thus returning always zero.

cmd = new SqlCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "AbsentEntry";
cmd.Parameters.Add("@EmpID", SqlDbType.VarChar).Value = ViewState["empID"].ToString();
cmd.Parameters.Add("@AttendanceDate", SqlDbType.Date).Value = date.ToString("yyyy-MM-dd");
SqlParameter returnParameter = cmd.Parameters.Add("@returnval", SqlDbType.Int);
returnParameter.Direction = ParameterDirection.ReturnValue;
cmd.Connection = conn;
conn.Open();
cmd.ExecuteNonQuery();
int result = (int)cmd.Parameters["@returnval"].Value;
return result;