首頁 > 資料庫 > mysql教程 > 如何使用使用者定義的表格類型將字串清單傳遞給 SQL Server 預存程序?

如何使用使用者定義的表格類型將字串清單傳遞給 SQL Server 預存程序?

Barbara Streisand
發布: 2025-01-13 10:02:42
原創
131 人瀏覽過

How to Pass a List of Strings to a SQL Server Stored Procedure Using a User-Defined Table Type?

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板