將字串清單傳遞給C# 中的預存程序
從C# 呼叫SQL Server 預存程序時,傳遞字串清單作為參數可能具有挑戰性。不過,在 SQL Server 2008 及更高版本中,有一個使用使用者定義表格類型 (UDTT) 功能的解決方案。
建立UDTT
首先,建立UDTT表示字串清單:
CREATE TYPE [dbo].[StringList] AS TABLE( [Item] [NVARCHAR](MAX) NULL );
修改儲存的過程
修改儲存的過程CREATE PROCEDURE [dbo].[sp_UseStringList] @list StringList READONLY AS BEGIN -- Just return the items we passed in SELECT l.Item FROM @list l; END
在預存過程中,將UDTT宣告為參數:
在C# 中填入UDTTusing System.Data; using System.Data.SqlClient; ... DataTable table = new DataTable(); table.Columns.Add("Item", typeof(string));
for (int i = 0; i < 10; i++) table.Rows.Add("Item " + i.ToString());
SqlParameter pList = new SqlParameter("@list", SqlDbType.Structured); pList.TypeName = "dbo.StringList"; pList.Value = table;
建立一個SqlParameter 以將DataTable 作為UDTT 傳遞:
將列表傳遞到預存程序using (SqlConnection con = new SqlConnection(connstring)) { con.Open(); using (SqlCommand cmd = new SqlCommand("exec sp_UseStringList @list", con)) { cmd.Parameters.Add(pList); using (SqlDataReader dr = cmd.ExecuteReader()) { while (dr.Read()) Console.WriteLine(dr["Item"].ToString()); } } }
以上是如何從 C# 將字串清單傳遞到 SQL Server 預存程序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!