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

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

Susan Sarandon
リリース: 2025-01-20 01:32:08
オリジナル
807 人が閲覧しました

How to Retrieve Stored Procedure Return Values in C#?

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

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

問題の説明

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

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

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
ログイン後にコピー

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

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();
ログイン後にコピー

解決策

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

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;
}
ログイン後にコピー

以上がC# でストアド プロシージャの戻り値を取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート