C# でのストアド プロシージャ出力パラメーターの使用
ストアド プロシージャからデータを取得する場合、多くの場合、追加情報を取得するために出力パラメータにアクセスする必要があります。この例では、C# プログラムが usp_InsertContract ストアド プロシージャによって返された主キーを取得しようとしているときに問題が発生しました。
以下に示すように、ストアド プロシージャは SCOPE_IDENTITY() を使用するように少し変更されています。
<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>
出力値を正しく取得できるように C# コードも調整されました:
<code class="language-csharp">// 打开连接并执行存储过程 conn.Open(); cmd.ExecuteNonQuery(); // 从@NewId读取输出值 int contractID = Convert.ToInt32(cmd.Parameters["@NewId"].Value); conn.Close();</code>
この変更により、主キーが出力パラメーターとして正しく返され、C# プログラムでアクセスできるようになり、問題が解決されます。
注: Contracts テーブルに IDENTITY 属性が正しく設定された列があることを必ず確認してください。 IDENTITY 列が欠落していると、主キー値の取得が困難になる場合もあります。
以上がC# でストアド プロシージャの出力パラメータから主キーを取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。