Ausführen gespeicherter Prozeduren für jede Zeile von Abfrageergebnissen in T-SQL
Um die Ergebnisse einer Abfrage zu durchlaufen und eine gespeicherte Prozedur auszuführen Für jede Zeile kann in T-SQL ein CURSOR verwendet werden. Ein CURSOR ermöglicht es Ihnen, jeweils eine Zeile aus einer Ergebnismenge abzurufen, was ihn für dieses Szenario gut geeignet macht.
Um diese Schleifenfunktionalität zu erreichen, beschreiben die folgenden Schritte die Lösung in T-SQL:
-
Erforderliche Variablen deklarieren:
a. Deklarieren Sie eine Ganzzahlvariable @id, um den ID-Wert jeder Zeile zu speichern.
b. Deklarieren Sie eine zweite Variable @name, um beispielsweise einen zusätzlichen Spaltenwert aus der Tabelle zu speichern.
c. Deklarieren Sie eine CURSOR-Variable @getid, um den Cursor zu halten, der durch die Zeilen blättert.
-
Erstellen Sie den CURSOR:
Verwenden Sie die SET-Anweisung, um @getid einen Wert zuzuweisen, wobei der value ist eine SQL-Anweisung, die die gewünschten Spalten aus der Tabelle auswählt. In diesem Beispiel wählen wir sowohl ID als auch Name aus.
-
Öffnen Sie den CURSOR:
Verwenden Sie die OPEN-Anweisung, um den CURSOR zu öffnen und ihn für Abrufvorgänge verfügbar zu machen.
-
Erste Zeile abrufen:
Verwenden Sie die FETCH NEXT-Anweisung, um die abzurufen erste Zeile der Ergebnismenge in die deklarierten Variablen (@id und @name).
-
Schleife durch die Zeilen:
Verwenden Sie eine WHILE-Schleife, um so lange durch die verbleibenden Zeilen zu iterieren da @@FETCH_STATUS 0 ist, was darauf hinweist, dass noch weitere Zeilen verarbeitet werden müssen.
-
Gespeichertes ausführen Prozedur:
Führen Sie innerhalb der Schleife die gespeicherte Prozedur mit der EXEC-Anweisung aus und übergeben Sie dabei die entsprechenden Parameter aus der aktuellen Zeile. In diesem Beispiel übergeben wir @id, @otherVarName und @varForName.
-
Nächste Zeile abrufen:
Nachdem Sie die gespeicherte Prozedur ausgeführt haben, verwenden Sie FETCH NEXT erneut, um die nächste abzurufen Zeile in die deklarierten Variablen.
-
Schließen Sie die und geben Sie sie frei CURSOR:
Nach der Verarbeitung aller Zeilen verwenden Sie die Anweisungen CLOSE und DEALLOCATE, um die CURSOR-Ressourcen freizugeben.
Durch Befolgen dieser Schritte können Sie die Ergebnisse einer Abfrage effektiv in einer Schleife durchlaufen T-SQL und führen Sie eine gespeicherte Prozedur für jede Zeile aus, sodass Sie benutzerdefinierte Vorgänge basierend auf den abgerufenen Daten ausführen können.
Das obige ist der detaillierte Inhalt vonWie kann ich eine gespeicherte Prozedur für jede von einer T-SQL-Abfrage zurückgegebene Zeile ausführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!