ホームページ > バックエンド開発 > C++ > C# でストアド プロシージャから出力パラメータを取得する方法

C# でストアド プロシージャから出力パラメータを取得する方法

Mary-Kate Olsen
リリース: 2025-01-10 08:05:42
オリジナル
699 人が閲覧しました

How to Retrieve Output Parameters from a Stored Procedure in C#?

C# のストアド プロシージャから出力パラメーターを取得する

多くのデータベース対話ではストアド プロシージャを利用してデータを効率的に管理します。 一般的な要件は、特に自動生成された主キーを扱う場合に、出力パラメータを取得することです。 この例では、SQL Server ストアド プロシージャを使用するときに C# で出力パラメーターを正しく処理する方法を示します。

この問題は、INSERT 操作の後に新しく生成された主キーを取得しようとするとよく発生します。 次の変更されたストアド プロシージャは、解決策を提供します。

<code class="language-sql">CREATE PROCEDURE usp_InsertContract
(
  @ContractNumber varchar(7),
  @NewId int OUTPUT
)
AS
BEGIN
  INSERT INTO [dbo].[Contracts] (ContractNumber)
  VALUES (@ContractNumber);

  SELECT @NewId = SCOPE_IDENTITY();
END;</code>
ログイン後にコピー

このストアド プロシージャはコントラクト番号を受け入れ、@NewId を使用して SCOPE_IDENTITY() 出力パラメーター経由で新しく生成された ID を返します。

この出力パラメータを取得するための更新された C# コードは次のとおりです。

<code class="language-csharp">// Establish database connection and command object
using (SqlConnection conn = new SqlConnection(pvConnectionString))
using (SqlCommand cmd = new SqlCommand("dbo.usp_InsertContract", conn))
{
  cmd.CommandType = CommandType.StoredProcedure;

  // Define and add parameters
  cmd.Parameters.AddWithValue("@ContractNumber", contractNumber);
  cmd.Parameters.Add("@NewId", SqlDbType.Int).Direction = ParameterDirection.Output;

  // Open connection and execute the stored procedure
  conn.Open();
  cmd.ExecuteNonQuery();

  // Retrieve the output parameter value
  int contractID = Convert.ToInt32(cmd.Parameters["@NewId"].Value);
  conn.Close();
}</code>
ログイン後にコピー

この C# コードはデータベースに接続し、ストアド プロシージャを実行し、@NewId 出力パラメータを効率的に取得して contractID 変数に保存します。 新しく生成された主キーは、アプリケーション内でさらに処理できるようになりました。

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

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