首頁 > 資料庫 > mysql教程 > 如何有效地將清單傳遞給 SQL 預存程序?

如何有效地將清單傳遞給 SQL 預存程序?

Barbara Streisand
發布: 2025-01-01 08:36:10
原創
958 人瀏覽過

How Can I Efficiently Pass a List to a SQL Stored Procedure?

透過清單;高效率轉換為SQL 預存程序

傳統上,將多個項目傳遞給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」類型是使用者定義的表格類型,映射到清單在 C# 中。然後,「@Items」參數可以接受項目 ID 清單作為單一實體,從而增強效能和程式碼可讀性。

以上是如何有效地將清單傳遞給 SQL 預存程序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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