首頁 >後端開發 >C++ >如何從 C# 將字串清單傳遞到 SQL Server 預存程序?

如何從 C# 將字串清單傳遞到 SQL Server 預存程序?

Susan Sarandon
Susan Sarandon原創
2025-01-05 00:53:40243瀏覽

How to Pass a List of Strings to a SQL Server Stored Procedure from C#?

將字串清單傳遞給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# 中填入UDTT
using System.Data;
using System.Data.SqlClient;

...

DataTable table = new DataTable();
table.Columns.Add("Item", typeof(string));

在C# 中,建立一個DataTable並新增一個名為string類型的欄位"Item":
for (int i = 0; i < 10; i++)
    table.Rows.Add("Item " + i.ToString());

使用字串清單填充DataTable:
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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn