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