透過清單
傳統上,將多個項目傳遞給SQL 預存程序涉及繁瑣的字串操作和連接由分隔符號分隔的ID。這種方法在性能和靈活性方面可能不是最佳的。然而,隨著 SQL Server 2008 的出現,一種名為「表值參數」的新功能作為一種優越的解決方案出現了。
透過利用表值參數,開發人員可以在資料庫,然後將該類型的值清單作為單一參數傳遞給預存程序。這種方法消除了手動字串連接的需要,並提供了幾個好處:
利用表值參數,開發人員需要在資料庫中建立使用者定義的表類型,然後修改預存程序以接受該類型作為參數。下面的程式碼片段示範如何實作此方法:
C# 程式碼:
public void AddItemsToReport(string connStr, int Id, List<int> itemList) { using (SqlConnection _connection = new SqlConnection(connStr)) { using (SqlCommand _sqlcommand = new SqlCommand("AddItemsToReport", _connection)) { _sqlcommand.CommandType = CommandType.StoredProcedure; _sqlcommand.Parameters.AddWithValue("ReportId", Id); _sqlcommand.Parameters.AddWithValue("Items", itemList); _connection.Open(); _sqlcommand.ExecuteNonQuery(); } } }
SQL 預存程序:
CREATE PROCEDURE AddItemsToReport (@ReportId int, @Items IntArray) AS BEGIN -- Insert each item into ReportItem table INSERT INTO ReportItem (ReportId, ItemId) SELECT @ReportId, Item FROM @Items END在此範例中,「IntArray」類型是使用者定義的表格類型,映射到清單
以上是如何有效地將清單傳遞給 SQL 預存程序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!