ホームページ > バックエンド開発 > C++ > C# で SQL Server ストアド プロシージャから SCOPE_IDENTITY() を含む出力パラメータを取得するにはどうすればよいですか?

C# で SQL Server ストアド プロシージャから SCOPE_IDENTITY() を含む出力パラメータを取得するにはどうすればよいですか?

Patricia Arquette
リリース: 2025-01-10 09:11:41
オリジナル
545 人が閲覧しました

How Can I Retrieve Output Parameters, Including SCOPE_IDENTITY(), from SQL Server Stored Procedures in C#?

C# アプリケーション内の SQL Server ストアド プロシージャからの出力パラメーターへのアクセス

チャレンジ

C# で SQL Server ストアド プロシージャから出力パラメータ値、特に SCOPE_IDENTITY() を使用して主キーを正常に取得するのは難しい場合があります。 この記事では、一般的な問題に対処し、実用的な解決策を提供します。

ストアド プロシージャの例

usp_InsertContract ストアド プロシージャはプロセスを示します。 Contracts テーブルにレコードを挿入し、Id 出力パラメーターを介して新しく生成された主キー (@NewId 列) を返します。 更新されたプロシージャでは、主キーを正確に取得するために 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# の実装

以下の C# コード スニペットは、出力パラメーターを処理する方法を示しています。

<code class="language-csharp">SqlParameter pvNewId = new SqlParameter();
pvNewId.ParameterName = "@NewId";
pvNewId.DbType = DbType.Int32;
pvNewId.Direction = ParameterDirection.Output;

// ... (Add pvNewId to the SqlCommand object 'cmd') ...

// Execute the stored procedure
cmd.ExecuteNonQuery();

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

よくある落とし穴と解決策

問題が発生した場合は、次の点を確認してください:

  • ID 列: Contracts テーブルに ID 列 (自動インクリメント主キー) が含まれていることを確認します。
  • SCOPE_IDENTITY() 使用法: 最後に挿入された ID 値を取得するには、ストアド プロシージャ内で SCOPE_IDENTITY() を正しく使用してください。
  • パラメータ構成: SqlParameter オブジェクト (pvNewId) が SqlCommand オブジェクト (cmd) に正しく追加されていること、およびそのプロパティ (ParameterNameDbTypeDirection) が正確に設定されています。

これらの点に対処することで、C# アプリケーション内の SQL Server ストアド プロシージャから、SCOPE_IDENTITY() によって生成されたものを含む出力パラメーターを効果的に取得できます。

以上がC# で SQL Server ストアド プロシージャから SCOPE_IDENTITY() を含む出力パラメータを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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