ホームページ >バックエンド開発 >C++ >C# から動的文字列リストを SQL Server ストアド プロシージャに効率的に渡す方法

C# から動的文字列リストを SQL Server ストアド プロシージャに効率的に渡す方法

Susan Sarandon
Susan Sarandonオリジナル
2025-01-04 18:44:38503ブラウズ

How to Efficiently Pass a Dynamic String List to a SQL Server Stored Procedure from C#?

C# SQL Server - 動的文字列リストをストアド プロシージャに渡す

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。