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中文網其他相關文章!