テーブル値のパラメーターリストをSQLストアドプロシージャに合格する
特定のレコードに関連付けられている複数のアイテムをデータベーステーブルに分離するシナリオは、データ操作における一般的な課題。従来のアプローチには、パラメーター値を反復的に渡すか、文字列操作を使用しますが、より効率的なソリューションが利用可能です。 2008は、構造化されたデータのコレクションをパラメーターとしてストアドプロシージャに渡すことを可能にするテーブル値パラメーターを導入しました。これにより、複雑な文字列操作または反復パラメーター処理の必要性が排除されます。 ( @ReportID int、 @items as ItemList-ユーザー定義のテーブルタイプ )) として 始める ReportItem(ReportID、ItemID)に挿入 @ReportIDを選択してください、 id @itemsから end
アイテムリストのカスタムテーブルタイプ
アイテムリストのカスタムテーブルタイプを作成するには、次のsqlステートメントを実行します:
createタイプタイプテーブルとしてアイテムリスト ( id int )
ALTER PROCEDURE AddItemsToReport ( @ReportId int, @Items AS ItemList -- User-defined table type ) AS BEGIN INSERT INTO ReportItem (ReportId, ItemId) SELECT @ReportId, Id FROM @Items ENDc#
from c#codeのテーブル値パラメーターをパスすると、カスタムテーブルタイプのインスタンスを作成します:
var itemlist = new itemList(); itemlist.rows.add(1); itemlist.rows.add(2); itemlist.rows.add(3);
CREATE TYPE ItemList AS TABLE ( Id int )
dbcommand.addinparameter(dbcommand、 "items"、dbtype.object、itemlist)) ;
テーブル値の利点パラメーター
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データベースへの複数のラウンドトリップを回避することにより、パフォーマンスを向上させます。入力データを強く入力することにより。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3