使用使用者定義表格類型將字串清單傳遞給 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中文網其他相關文章!