Rumah >pangkalan data >tutorial mysql >Bagaimanakah Parameter Bernilai Jadual Boleh Meningkatkan Kecekapan Apabila Menyalurkan Berbilang Item kepada Prosedur Tersimpan SQL?
Masalah:
Memindahkan berbilang item ke satu rekod pangkalan data dengan cekap kekal sebagai cabaran berterusan . Sebagai contoh, memberikan berbilang item kepada laporan memerlukan pengemaskinian jadual ReportItems dengan berbilang rekod. Pendekatan konvensional melibatkan kod kompleks dan fungsi tambahan untuk memproses senarai item sebagai rentetan.
Dengan kemunculan SQL Server 2008, "Parameter bernilai jadual" memperkenalkan penyelesaian terobosan untuk teka-teki ini.
Keajaiban TVP:
Parameter bernilai jadual membolehkan anda menghantar struktur seperti jadual sebagai parameter kepada prosedur tersimpan. Dalam kes kami, kami boleh mentakrifkan TVP untuk menerima jadual ID item integer.
Kod Disemak:
Kod yang disemak menjadi lebih ringkas:
public void AddItemsToReport(string connStr, int Id, List<int> itemList) { Database db = DatabaseFactory.CreateDatabase(connStr); string sqlCommand = "AddItemsToReport" DbCommand dbCommand = db.GetStoredProcCommand(sqlCommand); // Convert the list to a DataTable (lightweight) DataTable table = itemList.ToDataTable(); // Create the TVP parameter db.AddParameter(dbCommand, "Items", table); // Execute the stored procedure db.ExecuteNonQuery(dbCommand); }
Prosedur Tersimpan yang Dipertingkatkan:
Prosedur tersimpan memudahkan lagi:
INSERT INTO ReportItem (ReportId,ItemId) SELECT @ReportId, Id FROM @Items
Kesimpulan:
Parameter bernilai jadual menawarkan mekanisme yang elegan dan cekap untuk memindahkan berbilang item ke prosedur tersimpan SQL. Dengan menghapuskan keperluan untuk manipulasi rentetan kompleks dan fungsi tambahan, TVP menyelaraskan proses pembangunan dan meningkatkan kebolehbacaan kod.
Atas ialah kandungan terperinci Bagaimanakah Parameter Bernilai Jadual Boleh Meningkatkan Kecekapan Apabila Menyalurkan Berbilang Item kepada Prosedur Tersimpan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!