テーブル値パラメータ リストを SQL ストアド プロシージャに渡す
特定のレコードに関連付けられた複数の項目をデータベース テーブルに設定するシナリオは次のとおりです。データ操作における一般的な課題です。従来のアプローチには、パラメーター値を繰り返し渡すか、文字列操作を使用する必要がありますが、より効率的なソリューションが利用可能です。
解決策: SQL Server 2008 のテーブル値パラメーター
SQL Server 2008 では、構造化データのコレクションをパラメーターとしてストアド プロシージャに渡すことができるテーブル値パラメーターが導入されました。これにより、複雑な文字列操作や反復パラメータ処理の必要がなくなります。
提供されたコードでは、テーブル値パラメータを受け入れるように "AddItemsToReport" ストアド プロシージャを更新できます。
ALTER PROCEDURE AddItemsToReport ( @ReportId int, @Items AS ItemList -- User-defined table type ) AS BEGIN INSERT INTO ReportItem (ReportId, ItemId) SELECT @ReportId, Id FROM @Items END
アイテム リストのカスタム テーブル タイプ
アイテム リストのカスタム テーブル タイプを作成するには、次の SQL ステートメント:
CREATE TYPE ItemList AS TABLE ( Id int )
C# からテーブル値パラメーターを渡す
C# コードで、カスタム テーブル型のインスタンスを作成します:
var itemList = new ItemList(); itemList.Rows.Add(1); itemList.Rows.Add(2); itemList.Rows.Add(3);
次に、テーブル値パラメータを格納されたパラメータに渡します。プロシージャ:
dbCommand.AddInParameter(dbCommand, "Items", DbType.Object, itemList);
テーブル値パラメーターの利点
以上がテーブル値パラメーターは SQL ストアド プロシージャのパフォーマンスとコードの単純さをどのように改善できるでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。