public int Test()
{
int result = 1;
SqlCommand cmd = new SqlCommand("spTest", conn);
cmd.CommandType = CommandType.StoredProcedure;
var returnParameter = cmd.Parameters.Add("@RETURN_VALUE", SqlDbType.Int);
returnParameter.Direction = ParameterDirection.ReturnValue;
try
{
conn.Open();
cmd.ExecuteNonQuery();
result = Convert.ToInt32(returnParameter.Value);
}
catch (Exception e)
{
MessageBox.Show(e.Message.ToString());
}
finally
{
conn.Close();
}
return result;
}
メソッドはresult=1で開始するため、クエリが成功すると0に変わることがわかります。これをテストしましたが、1から0に変わります。私の質問は、これがストアドプロシージャからデフォルトのRETURN_VALUEを取得する正しい方法ですか?
これにより、結果の値も1から0に変更されました。なぜですか。クエリはまだ実行されていません。
public int Test()
{
int result = 1;
SqlCommand cmd = new SqlCommand("spTest", conn);
cmd.CommandType = CommandType.StoredProcedure;
var returnParameter = cmd.Parameters.Add("@RETURN_VALUE", SqlDbType.Int);
returnParameter.Direction = ParameterDirection.ReturnValue;
result = Convert.ToInt32(returnParameter.Value);
try
{
conn.Open();
cmd.ExecuteNonQuery();
}
catch (Exception e)
{
MessageBox.Show(e.Message.ToString());
}
finally
{
conn.Close();
}
return result;
}