Rumah >pangkalan data >tutorial mysql >Bolehkah Prosedur Tersimpan Dilaksanakan untuk Setiap Baris Jadual Tanpa Kursor?
Melaksanakan Prosedur Tersimpan untuk Setiap Baris Jadual tanpa Perlu Kursor
Apabila berhadapan dengan tugas memanggil prosedur tersimpan untuk setiap baris dalam jadual, adalah wajar untuk mempertimbangkan pendekatan lelaran melalui baris menggunakan kursor. Walau bagaimanapun, adalah mungkin untuk mencapai tugas ini tanpa bergantung pada kursor.
Menggunakan Pendekatan Berasaskan Set
Dalam pendekatan berasaskan set, kami berhasrat untuk mencari cara untuk melaksanakan operasi untuk semua baris secara serentak. Sebagai contoh, jika matlamat kami adalah untuk mengemas kini lajur untuk setiap baris dalam jadual, kami boleh memanfaatkan pernyataan UPDATE dengan klausa WHERE yang sesuai untuk mengubah suai rekod yang berkaitan sekali gus.
Kes Khusus: Mengulangi Lajur Baris
Walau bagaimanapun, apabila berhadapan dengan senario di mana lajur baris perlu digunakan sebagai parameter input untuk prosedur tersimpan, pendekatan yang sedikit berbeza diperlukan. Seperti yang diterangkan dalam jawapan yang disediakan:
Kod Contoh
Coretan kod yang disediakan menggambarkan cara pendekatan ini boleh dilaksanakan:
-- Declare & initialize (2008 syntax) DECLARE @CustomerID INT = 0 -- Iterate over all customers WHILE (1 = 1) BEGIN -- Get next customerId SELECT TOP 1 @CustomerID = CustomerID FROM Sales.Customer WHERE CustomerID > @CustomerId ORDER BY CustomerID -- Exit loop if no more customers IF @@ROWCOUNT = 0 BREAK; -- call your sproc EXEC dbo.YOURSPROC @CustomerId END
Atas ialah kandungan terperinci Bolehkah Prosedur Tersimpan Dilaksanakan untuk Setiap Baris Jadual Tanpa Kursor?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!