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

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

Susan Sarandon
Susan Sarandonオリジナル
2025-01-20 01:32:08793ブラウズ

How to Retrieve Stored Procedure Return Values in C#?

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

C# で値を返すストアド プロシージャを呼び出す場合、コード内で戻り値を正しく処理することが重要です。この記事では、この問題について説明し、ストアド プロシージャから戻り値を正常に取得するための解決策を提供します。

問題の説明

C# アプリケーションは、シーケンス内の次の値を返すストアド プロシージャを呼び出す必要があります。オンラインで解決策に従っているにもかかわらず、戻り値を取得できません。提供されるコード スニペットには、SqlCommand オブジェクトの作成、コマンド テキストとしてストアド プロシージャの指定、SqlConnection を使用したコマンドの実行が含まれています。ただし、ストアドプロシージャの戻り値は取得されません。

ストアプロシージャコード

<code class="language-sql">ALTER procedure [dbo].[usp_GetNewSeqVal]
      @SeqName nvarchar(255)
as
begin
      declare @NewSeqVal int
      set NOCOUNT ON
      update AllSequences
      set @NewSeqVal = CurrVal = CurrVal+Incr
      where SeqName = @SeqName

      if @@rowcount = 0 begin
print 'Sequence does not exist'
            return
      end

      return @NewSeqVal
end</code>

ストアド プロシージャを呼び出すための C# コード

<code class="language-csharp">SqlConnection conn = new SqlConnection(getConnectionString());
conn.Open();

SqlCommand cmd = new SqlCommand(parameterStatement.getQuery(), conn);
cmd.CommandType = CommandType.StoredProcedure;

SqlParameter param = new SqlParameter();

param = cmd.Parameters.Add("@SeqName", SqlDbType.NVarChar);
param.Direction = ParameterDirection.Input;
param.Value = "SeqName";

SqlDataReader reader = cmd.ExecuteReader();</code>

解決策

ストアド プロシージャの戻り値を取得するには、ReturnValue 方向のパラメーターを SqlCommand オブジェクトに追加する必要があります。これは、変数を宣言し、ストアド プロシージャの戻り値をそれに割り当てるようにコマンドに指示します。次のコードは解決策を示しています:

<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");

    // @ReturnVal 可以是任何名称
    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 までご連絡ください。