effizient Bearbeitung von Abfrageergebnissen mit gespeicherten Prozeduren in SQL Server
Diese Anleitung zeigt, wie eine gespeicherte Prozedur für jede Zeile ausgeführt wird, die von einer SQL -Server -Abfrage zurückgegeben wird. Stellen Sie sich vor, Sie haben eine gespeicherte Prozedur, mit der Benutzerdaten basierend auf einer Benutzer -ID aktualisiert werden können. Diese Methode zeigt, wie diese Prozedur auf mehrere von einer Abfrage abgerufene Benutzer anwendet.
Verwenden von Cursors für die Verarbeitung von Zeilen für Reihen
SQL Server Cursors bieten eine Lösung zum Iterieren durch Abfrageergebnisse. Hier ist ein Beispiel:
<code class="language-sql">DECLARE @field1 INT; DECLARE @field2 INT; DECLARE cur CURSOR LOCAL FOR SELECT field1, field2 FROM sometable WHERE someotherfield IS NULL; OPEN cur; FETCH NEXT FROM cur INTO @field1, @field2; WHILE @@FETCH_STATUS = 0 BEGIN -- Execute your stored procedure for each row EXEC uspYourSproc @field1, @field2; FETCH NEXT FROM cur INTO @field1, @field2; END; CLOSE cur; DEALLOCATE cur;</code>
Leistungsüberlegungen
Cursors, obwohl sie für die Verarbeitung von Zeilen für Reihen bequem sind, können jedoch weniger effizient sein als ein SET-basierter Vorgang. Wenn Sie bei großen Datensätzen zuerst die Ergebnisse in eine temporäre Tabelle laden, um die Cursorleistung zu verbessern. Vermeiden Sie die Verwendung von Cursors, wann immer möglich für eine optimale Leistung.
Überlegene Alternativen: Set-basierte Operationen
Wenn Sie machbar sind, strukturiert die Umstrukturierung Ihrer Logik, um eine einzelne UPDATE
-Anweisung anstelle einer gespeicherten Prozedurschleife zu verwenden, die Leistung erheblich. Set-basierte Vorgänge sind im Allgemeinen weitaus effizienter als eine Reihe von Reihen.
Das obige ist der detaillierte Inhalt vonWie kann ich Abfrageergebnisse iterieren, um eine gespeicherte Prozedur für jede Zeile in SQL Server auszuführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!