C# SQL Server: ストアド プロシージャにリストを渡す
C# では、コードを通じて SQL Server ストアド プロシージャを呼び出すことができます。 。ただし、文字列のリストを渡すのは簡単ではありません。この記事では、代わりにユーザー定義テーブル タイプ (UDT) を使用する代替方法について説明します。
ユーザー定義テーブル タイプ (UDT) の作成
SQL Server 2008 では UDT が導入されました。 、複雑なデータ型をストアド プロシージャに渡すための構造化された方法を提供します。文字列のリストの UDT を作成するには:
CREATE TYPE [dbo].[StringList] AS TABLE( [Item] [NVARCHAR](MAX) NULL );
ストアド プロシージャの変更
UDT パラメータを受け入れるには、ストアド プロシージャを次のように変更する必要があります。 :
CREATE PROCEDURE [dbo].[sp_UseStringList] @list StringList READONLY AS BEGIN -- Just return the items we passed in SELECT l.Item FROM @list l; END
C# からリストを渡すコード
最後に、C# コードからリストを渡す方法を示します。
using System.Data; var con = new SqlConnection(connstring); con.Open(); using (SqlCommand cmd = new SqlCommand("exec sp_UseStringList @list", con)) { using (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; cmd.Parameters.Add(pList); using (var dr = cmd.ExecuteReader()) { while (dr.Read()) Console.WriteLine(dr["Item"].ToString()); } } }
結論
UDT の使用は効果的です。 C# コードから文字列のリストを SQL Server ストアド プロシージャに渡す方法。上記の手順に従うことで、開発者はデータベースとのやり取りで動的で大きな文字列リストを簡単に処理できます。
以上がC# から SQL Server ストアド プロシージャに文字列のリストを効率的に渡すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。