C# でストアド プロシージャの戻り値を取得する
この記事では、C# Windows アプリケーションからストアド プロシージャを呼び出し、その戻り値を取得する方法について説明します。ストアド プロシージャ usp_GetNewSeqVal
は、新しいシーケンス値を生成するために使用されます。インターネット上のいくつかの解決策を参照しても、戻り値を正常に取得できません。
問題は、ReturnValue
方向パラメータがコマンドに欠落していることです。これを修正するには、次のパラメータを追加する必要があります:
<code class="language-csharp">var returnParameter = cmd.Parameters.Add("@ReturnVal", SqlDbType.Int); returnParameter.Direction = ParameterDirection.ReturnValue;</code>
パラメータの方向を ParameterDirection.ReturnValue
に設定すると、SqlCommand
にパラメータを変数として宣言し、ストアド プロシージャの戻り値を割り当てるように指示します。これは、SQL (exec @ReturnValue = spMyProcedure...
) で使用される構文に似ています。
このパラメータを追加すると、cmd.ExecuteReader()
呼び出しによってストアド プロシージャが実行され、戻り値が returnParameter
に格納されます。これで、returnParameter.Value
としてアクセスできるようになります。
必要な変更を加えたコードは次のとおりです:
<code class="language-csharp">using (SqlConnection conn = new SqlConnection(getConnectionString())) using (SqlCommand cmd = conn.CreateCommand()) { cmd.CommandText = parameterStatement.getQuery(); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddWithValue("SeqName", "SeqNameValue"); var returnParameter = cmd.Parameters.Add("@ReturnVal", SqlDbType.Int); returnParameter.Direction = ParameterDirection.ReturnValue; conn.Open(); cmd.ExecuteNonQuery(); var result = returnParameter.Value; }</code>
この変更を行うことで、ストアド プロシージャの戻り値を正常に取得できるようになります。
以上がC# でストアド プロシージャの戻り値を取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。