2014-05-25 53 views
0

所以这应该返回@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

它永远不会这样做!你也可以在'return rez'行看到。 –

回答

9

使用引号@rez - 它应该是一个字符串:

rez = int.Parse(cmd.Parameters["@rez"].Value.ToString()); 

@rez is actually the rez local variable,而不是 “REZ” SQL参数。它总是为零,所以你得到的是第一个参数。

我也避免使用ToStringParse。如果你的存储过程返回一个数字,你可以简单地做(int)cmd.Parameters["@rez"].ValueConvert.ToInt32