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

如何從 C# 有效率地將動態字串清單傳遞到 SQL Server 預存程序?

Susan Sarandon
Susan Sarandon原創
2025-01-04 18:44:38465瀏覽

How to Efficiently Pass a Dynamic String List to a SQL Server Stored Procedure from C#?

C# SQL Server - 將動態字串清單傳遞到預存程序

Brett 的查詢圍繞著將動態字串清單合併到 SQL Server 預存程序中。挑戰在於如何在不影響效能的情況下有效地傳遞此清單。

將字串連接到逗號分隔清單的傳統方法有局限性,尤其是對於較大的資料集。但是,還有更有效的選項可用。

使用者定義的表格類型(UDT):

SQL Server 2008 引入了使用者定義的表格類型(UDT),它允許您建立可以儲存表格資料的自訂資料類型。您可以建立一個名為“StringList”的 UDT 並在預存程序中使用它。

SQL:

CREATE TYPE [dbo].[StringList] AS TABLE(
    [Item] [NVARCHAR](MAX) NULL
);

以下C# 程式碼示範如何使用此UDT:

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;

在儲存過程中,您可以使用下列方式存取清單:

CREATE PROCEDURE [dbo].[sp_UseStringList]
    @list StringList READONLY
AS
BEGIN
    SELECT l.Item FROM @list l;
END

以上是如何從 C# 有效率地將動態字串清單傳遞到 SQL Server 預存程序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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