所以这应该返回@rez
,而是返回@idCEL
。为什么呢?
int rez=0;
var cmd = new SqlCommand(@"exec spUpdateCELPowerMeasurementForGeoData1
@idCEL, @rez OUT", conn);
cmd.Parameters.AddWithValue("@idCEL",idCEL).Direction=System.Data.ParameterDirection.Input;
cmd.Parameters.AddWithValue("@rez", rez).Direction=System.Data.ParameterDirection.Output;
cmd.CommandTimeout=700;
cmd.ExecuteNonQuery();
rez = int.Parse(cmd.Parameters[@rez].Value.ToString());
return rez;
答案 0 :(得分:9)
在@rez
周围使用引号 - 它应该是一个字符串:
rez = int.Parse(cmd.Parameters["@rez"].Value.ToString());
@rez
is actually the rez
local variable,而不是" rez" sql参数。它始终为零,因此您将获得第一个参数。
我也避免使用ToString
和Parse
。如果您的存储过程返回了一个数字,则可以执行(int)cmd.Parameters["@rez"].Value
或Convert.ToInt32