ホームページ >バックエンド開発 >C++ >C# でストアド プロシージャの戻り値を取得する方法

C# でストアド プロシージャの戻り値を取得する方法

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-20 01:17:13976ブラウズ

How to Retrieve a Stored Procedure's Return Value in C#?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。