Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Meluluskan Senarai dengan Cekap kepada Prosedur Tersimpan SQL?
Senarai Lulus
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:
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
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!