Heim >Datenbank >MySQL-Tutorial >Können gespeicherte Prozeduren für jede Tabellenzeile ohne Cursor ausgeführt werden?
Gespeicherte Prozeduren für jede Tabellenzeile ausführen, ohne dass Cursor erforderlich sind
Wenn Sie vor der Aufgabe stehen, eine gespeicherte Prozedur für jede Zeile in aufzurufen Bei einer Tabelle ist es naheliegend, den Ansatz in Betracht zu ziehen, mit einem Cursor durch die Zeilen zu iterieren. Es ist jedoch möglich, diese Aufgabe zu lösen, ohne auf Cursor angewiesen zu sein.
Verwendung eines satzbasierten Ansatzes
In einem satzbasierten Ansatz zielen wir darauf ab, einen zu finden Möglichkeit, den Vorgang für alle Zeilen gleichzeitig auszuführen. Wenn unser Ziel beispielsweise darin besteht, eine Spalte für jede Zeile in einer Tabelle zu aktualisieren, könnten wir eine UPDATE-Anweisung mit einer entsprechenden WHERE-Klausel nutzen, um die relevanten Datensätze auf einmal zu ändern.
Sonderfall: Iterieren über Zeilenspalten
Bei Szenarios, in denen die Spalten einer Zeile als Eingabeparameter für eine gespeicherte Prozedur verwendet werden müssen, ist jedoch ein etwas anderer Ansatz erforderlich. Wie in der bereitgestellten Antwort beschrieben:
Code Beispiel
Der bereitgestellte Codeausschnitt veranschaulicht, wie dieser Ansatz implementiert werden kann:
-- 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
Das obige ist der detaillierte Inhalt vonKönnen gespeicherte Prozeduren für jede Tabellenzeile ohne Cursor ausgeführt werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!