ホームページ >データベース >mysql チュートリアル >C# で文字列のリストを SQL Server ストアド プロシージャに渡す方法
このガイドでは、C# アプリケーションから文字列のリストをパラメーターとして SQL Server ストアド プロシージャに渡す方法を説明します。 この方法では、SQL Server 2008 以降のバージョンに適したユーザー定義テーブル タイプ (UDTT) が利用されます。
まず、SQL Server で文字列リストを表す UDTT を作成します。
<code class="language-sql">CREATE TYPE [dbo].[StringList] AS TABLE( [Item] [NVARCHAR](MAX) NULL );</code>
次に、UDTT を入力として受け入れるようにストアド プロシージャを変更します。
<code class="language-sql">CREATE PROCEDURE [dbo].[sp_UseStringList] @list StringList READONLY AS BEGIN -- Process the string list SELECT l.Item FROM @list l; END</code>
C# コード内で UDTT を使用する方法は次のとおりです。
<code class="language-csharp">using (SqlConnection con = new SqlConnection(connstring)) { con.Open(); using (SqlCommand cmd = new SqlCommand("sp_UseStringList", con)) { cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddWithValue("@list", CreateStringListTable(new List<string> { "Apple", "Banana", "Orange" })); using (SqlDataReader reader = cmd.ExecuteReader()) { while (reader.Read()) { // Process each string from the reader string item = reader["Item"].ToString(); Console.WriteLine(item); } } } } //Helper function to create the DataTable private DataTable CreateStringListTable(List<string> stringList) { DataTable dt = new DataTable(); dt.Columns.Add("Item", typeof(string)); foreach (string str in stringList) { dt.Rows.Add(str); } return dt; }</code>
テストの目的で、次のように SQL Server Management Studio (SSMS) でストアド プロシージャを直接実行できます。
<code class="language-sql">DECLARE @list AS StringList; INSERT INTO @list VALUES ('Apple'); INSERT INTO @list VALUES ('Banana'); INSERT INTO @list VALUES ('Orange'); EXEC sp_UseStringList @list;</code>
このアプローチは、C# アプリケーションから SQL Server ストアド プロシージャを操作するときに文字列のリストを処理するための堅牢かつ効率的な方法を提供します。 UDTT を使用すると、データの整合性が保証され、他の方法と比較してパフォーマンスが向上します。
以上がC# で文字列のリストを SQL Server ストアド プロシージャに渡す方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。