Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Meluluskan Senarai dengan Cekap kepada Prosedur Tersimpan SQL?

Bagaimanakah Saya Boleh Meluluskan Senarai dengan Cekap kepada Prosedur Tersimpan SQL?

Barbara Streisand
Barbara Streisandasal
2025-01-01 08:36:10959semak imbas

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

Senarai Lulus kepada Prosedur Tersimpan SQL dengan Cekap

Secara tradisinya, menghantar berbilang item kepada prosedur tersimpan SQL melibatkan manipulasi rentetan yang membosankan dan ID penggabungan yang dipisahkan oleh pembatas. Pendekatan ini boleh menjadi suboptimum dari segi prestasi dan fleksibiliti. Walau bagaimanapun, dengan kemunculan SQL Server 2008, ciri baharu yang dipanggil "parameter nilai jadual" muncul sebagai penyelesaian unggul.

Dengan menggunakan parameter nilai jadual, pembangun boleh menentukan jenis jadual yang ditentukan pengguna dalam pangkalan data dan kemudian lulus senarai nilai jenis itu sebagai parameter tunggal kepada prosedur tersimpan. Pendekatan ini menghapuskan keperluan untuk penggabungan rentetan manual dan memberikan beberapa faedah:

  • Peningkatan prestasi: Parameter bernilai jadual membolehkan pangkalan data mengendalikan manipulasi data dengan lebih cekap, menghasilkan lebih pantas masa pelaksanaan.
  • Kod ringkas: Kod menjadi lebih ringkas dan boleh dibaca, kerana ia tidak lagi memerlukan operasi manipulasi rentetan yang kompleks.
  • Peningkatan fleksibiliti: Parameter bernilai jadual menyokong jenis data yang lebih kompleks dan membenarkan pemprosesan tambahan dalam prosedur yang disimpan.

Untuk memanfaatkan parameter bernilai jadual, pembangun perlu mencipta jenis jadual yang ditentukan pengguna dalam pangkalan data dan kemudian mengubah suai prosedur yang disimpan untuk terima jenis ini sebagai parameter. Coretan kod di bawah menunjukkan cara untuk melaksanakan pendekatan ini:

Kod 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 Stored Procedure:

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

Dalam contoh ini, jenis "IntArray" ialah jenis jadual yang ditentukan pengguna yang memetakan ke Senarai dalam C#. Parameter "@Items" kemudiannya boleh menerima senarai ID item sebagai entiti tunggal, meningkatkan prestasi dan kebolehbacaan kod.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Meluluskan Senarai dengan Cekap kepada Prosedur Tersimpan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn