首頁 > 後端開發 > C++ > 如何將 C# 字串清單傳遞給 SQL Server 預存程序的 IN 子句?

如何將 C# 字串清單傳遞給 SQL Server 預存程序的 IN 子句?

Patricia Arquette
發布: 2025-01-04 15:55:39
原創
458 人瀏覽過

How to Pass a C# String List to an SQL Server Stored Procedure's IN Clause?

從C# 將清單傳遞到SQL Server 預存程序

在給定的C# 程式碼中,正在使用各種參數值來呼叫儲存過程,包括字串列表。但是,預存程序中的查詢要求將清單作為 IN 子句的一部分傳遞。

解決方案:使用使用者定義的表格類型(SQL Server 2008)

SQL Server 2008 引入了使用者定義的表類型,該功能允許以結構化方式將資料集合傳遞到預存程序。以下是實作此解決方案的方法:

1.建立使用者定義的表格類型

建立與字串清單對應的表格類型。例如:

CREATE TYPE [dbo].[StringList] AS TABLE(
    [Item] [NVARCHAR](MAX) NULL
);
登入後複製

2。修改預存程序

調整預存程序以接受表格類型為輸入參數:

CREATE PROCEDURE [dbo].[sp_UseStringList]
    @list StringList READONLY
AS
BEGIN
    -- Query using the table type
    SELECT l.Item FROM @list l;
END
登入後複製

3.C# 填表類型

在C# 中,建立一個DataTable 物件並使用字串清單填充它。然後,定義一個參數將 DataTable 傳遞給預存程序。

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

    for (int i = 0; i < 10; i++)
        table.Rows.Add("Item " + i.ToString());

    var pList = new SqlParameter("@list", SqlDbType.Structured);
    pList.TypeName = "dbo.StringList";
    pList.Value = table;

    cmd.Parameters.Add(pList);
}
登入後複製

4.執行預存程序

使用填滿的 SqlParameter 物件執行預存程序。

範例用法:

using (var con = new SqlConnection(connstring))
{
    con.Open();

    using (SqlCommand cmd = new SqlCommand("exec sp_UseStringList @list", con))
    {
        using (var dr = cmd.ExecuteReader())
        {
            while (dr.Read())
                Console.WriteLine(dr["Item"].ToString());
        }
    }
}
登入後複製

以上是如何將 C# 字串清單傳遞給 SQL Server 預存程序的 IN 子句?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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