Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Memanggil Prosedur Tersimpan untuk Setiap Baris Jadual Tanpa Menggunakan Kursor?
Memanggil Prosedur Tersimpan untuk Baris Jadual Tanpa Kursor
Menggunakan kursor untuk memanggil prosedur tersimpan untuk setiap baris dalam jadual ialah pendekatan biasa. Walau bagaimanapun, terdapat kaedah alternatif yang boleh menawarkan faedah prestasi dan kejelasan kod.
Satu kaedah sedemikian melibatkan pendekatan berasaskan set, yang mengelakkan keperluan untuk kursor sepenuhnya. Pendekatan ini sesuai untuk senario di mana lajur baris boleh dibekalkan terus sebagai parameter input kepada prosedur yang disimpan.
Coretan kod berikut menunjukkan cara untuk mencapai ini:
SQL
-- Declare & init (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
Coretan ini bermula dengan memulakan pembolehubah @CustomerID kepada 0. Ia kemudian memasuki gelung WHILE yang berulang ke atas baris pelanggan dalam tertib menaik CustomerID, mendapatkan semula ID pelanggan seterusnya ke @CustomerID dalam setiap lelaran.
Sebaik sahaja ID pelanggan diperoleh, prosedur disimpan YOURSPROC digunakan menggunakan ID tersebut sebagai parameter. Gelung berterusan sehingga tiada lagi pelanggan ditemui dalam jadual.
Menggunakan pendekatan ini boleh menawarkan prestasi yang lebih baik berbanding kursor dalam senario tertentu, dan ia juga menyediakan struktur kod yang lebih ringkas dan boleh dibaca.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memanggil Prosedur Tersimpan untuk Setiap Baris Jadual Tanpa Menggunakan Kursor?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!