Brett のクエリは、文字列の動的リストを SQL Server ストアド プロシージャに組み込むことを中心に展開されています。課題は、パフォーマンスを損なうことなくこのリストを効率的に渡すことにあります。
文字列をカンマ区切りのリストに連結する従来のアプローチには、特に大規模なデータセットの場合、制限があります。ただし、より効率的なオプションが利用可能です。
ユーザー定義テーブル タイプ (UDT):
SQL Server 2008 では、ユーザー定義テーブル タイプ (UDT) が導入されました。表形式のデータを保存できるカスタム データ型を作成します。 「StringList」という UDT を作成し、ストアド プロシージャ内で使用できます。
SQL:
CREATE TYPE [dbo].[StringList] AS TABLE( [Item] [NVARCHAR](MAX) NULL );
次の C# コードは、この UDT の使用方法を示しています。
var table = new DataTable(); table.Columns.Add("Item", typeof(string)); for (int i = 0; i < 10; i++) table.Rows.Add("Item " + i.ToString()); var pList = new SqlParameter("@list", SqlDbType.Structured); pList.TypeName = "dbo.StringList"; pList.Value = table;
ストアド プロシージャ内で、次を使用してリストにアクセスできます:
CREATE PROCEDURE [dbo].[sp_UseStringList] @list StringList READONLY AS BEGIN SELECT l.Item FROM @list l; END
以上がC# から動的文字列リストを SQL Server ストアド プロシージャに効率的に渡す方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。