ホームページ >データベース >mysql チュートリアル >ユーザー定義のテーブル型を使用して文字列のリストを SQL Server ストアド プロシージャに渡す方法
ユーザー定義のテーブル型を使用して文字列のリストを 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 サイトの他の関連記事を参照してください。