ホームページ >データベース >mysql チュートリアル >リストを SQL ストアド プロシージャに効率的に渡すにはどうすればよいですか?
合格リスト
従来、複数の項目を SQL ストアド プロシージャに渡すには、面倒な文字列操作と区切り文字で区切られた ID の連結が必要でした。このアプローチは、パフォーマンスと柔軟性の点で最適ではない可能性があります。しかし、SQL Server 2008 の登場により、「テーブル値パラメータ」と呼ばれる新機能が優れたソリューションとして登場しました。
テーブル値パラメータを利用することで、開発者は、テーブル値パラメータを使用してユーザー定義のテーブル型を定義できます。データベースにアクセスし、その型の値のリストを単一のパラメーターとしてストアド プロシージャに渡します。このアプローチにより、手動で文字列を連結する必要がなくなり、いくつかの利点が得られます。
テーブル値パラメータを利用するには、開発者はデータベースにユーザー定義のテーブル型を作成し、この型をパラメータとして受け入れるようにストアド プロシージャを変更する必要があります。以下のコード スニペットは、このアプローチの実装方法を示しています。
C# コード:
public void AddItemsToReport(string connStr, int Id, List<int> itemList) { using (SqlConnection _connection = new SqlConnection(connStr)) { using (SqlCommand _sqlcommand = new SqlCommand("AddItemsToReport", _connection)) { _sqlcommand.CommandType = CommandType.StoredProcedure; _sqlcommand.Parameters.AddWithValue("ReportId", Id); _sqlcommand.Parameters.AddWithValue("Items", itemList); _connection.Open(); _sqlcommand.ExecuteNonQuery(); } } }
SQL ストアド プロシージャ:
CREATE PROCEDURE AddItemsToReport (@ReportId int, @Items IntArray) AS BEGIN -- Insert each item into ReportItem table INSERT INTO ReportItem (ReportId, ItemId) SELECT @ReportId, Item FROM @Items END
この例では、「IntArray」型は、次のようにマッピングされるユーザー定義のテーブル型です。リスト
以上がリストを SQL ストアド プロシージャに効率的に渡すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。