2014-05-25 52 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