ホームページ >データベース >mysql チュートリアル >ユーザー定義のテーブル型を使用して文字列のリストを SQL Server ストアド プロシージャに渡す方法

ユーザー定義のテーブル型を使用して文字列のリストを SQL Server ストアド プロシージャに渡す方法

Barbara Streisand
Barbara Streisandオリジナル
2025-01-13 10:02:42131ブラウズ

How to Pass a List of Strings to a SQL Server Stored Procedure Using a User-Defined Table Type?

ユーザー定義のテーブル型を使用して文字列のリストを SQL Server ストアド プロシージャに渡す

C# から SQL Server ストアド プロシージャを呼び出す場合、文字列のリストをパラメータとして渡す必要がある場合があります。単純なデータ型を処理するには標準パラメータで十分ですが、リストなどの複雑なデータ構造の場合は、より洗練されたアプローチが必要です。

文字列のリストを渡すには、SQL Server のユーザー定義テーブル タイプ (UDTT) 機能を利用できます。この機能を使用すると、データのコレクションを保存するテーブルをシミュレートするカスタム データ型を作成できます。

ユーザー定義テーブルタイプの作成

まず、ユーザー定義テーブル タイプ (UDTT) を作成する必要があります。

<code class="language-sql">CREATE TYPE [dbo].[StringList] AS TABLE(
    [Item] [NVARCHAR](MAX) NULL
);</code>

この UDTT は、文字列を保持する「Item」という名前の単一の列を定義します。

ストアド プロシージャを変更する

次に、UDTT パラメーターを受け入れるようにストアド プロシージャを変更します。

<code class="language-sql">CREATE PROCEDURE [dbo].[sp_UseStringList]
    @list StringList READONLY
AS
BEGIN
    -- 只返回我们传入的项目
    SELECT l.Item FROM @list l;
END</code>

C# での UDTT の設定

C# では、DataTable を使用して UDTT を設定します。

<code class="language-csharp">using (var table = new DataTable()) {
    table.Columns.Add("Item", typeof(string));

    // ...此处添加循环填充字符串列表到DataTable的代码...

    SqlParameter pList = new SqlParameter("@list", SqlDbType.Structured);
    pList.Value = table;
}</code>

ストアド プロシージャに UDTT パラメーターを渡します

最後に、UDTT パラメータをストアド プロシージャに渡します。

<code class="language-csharp">using (var cmd = new SqlCommand("exec sp_UseStringList @list", con)) {
    cmd.Parameters.Add(pList);

    using (var dr = cmd.ExecuteReader()) {
        while (dr.Read())
            Console.WriteLine(dr["Item"].ToString());
    }
}</code>

このアプローチにより、文字列のリストを SQL Server ストアド プロシージャに効率的に渡すことができます。

以上がユーザー定義のテーブル型を使用して文字列のリストを SQL Server ストアド プロシージャに渡す方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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