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;
        }