Heim >Datenbank >MySQL-Tutorial >Wie kann ich Cursor beim Aufruf gespeicherter Prozeduren in SQL vermeiden?
Alternative zur Verwendung von Cursorn für den Aufruf gespeicherter Prozeduren in SQL
Anstatt einen Cursor zu verwenden, sollten Sie einen satzbasierten Ansatz zum Ausführen einer gespeicherten Prozedur in Betracht ziehen Prozedur für jede Zeile in einer Tabelle. Dies bietet Leistungsvorteile und macht Cursor überflüssig.
In manchen Szenarien bleiben Cursor jedoch unvermeidbar. Für solche Fälle bietet das folgende Snippet eine praktikable Lösung:
-- Declare & initialize variables (SQL Server 2008 syntax) DECLARE @CustomerID INT = 0 -- Iterate through customers WHILE (1 = 1) BEGIN -- Retrieve customer ID SELECT TOP 1 @CustomerID = CustomerID FROM Sales.Customer WHERE CustomerID > @CustomerId ORDER BY CustomerID -- Exit loop if all customers have been processed IF @@ROWCOUNT = 0 BREAK; -- Invoke stored procedure EXEC dbo.YOURSPROC @CustomerId END
Dieses Snippet durchläuft Kunden basierend auf ihrer Kunden-ID und stellt sicher, dass die Daten jedes Kunden als Parameter an die gespeicherte Prozedur YOURSPROC übergeben werden.
Das obige ist der detaillierte Inhalt vonWie kann ich Cursor beim Aufruf gespeicherter Prozeduren in SQL vermeiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!