Heim >Datenbank >MySQL-Tutorial >Wie kann ich T-SQL-Abfrageergebnisse durchlaufen und für jede Zeile eine gespeicherte Prozedur ausführen?

Wie kann ich T-SQL-Abfrageergebnisse durchlaufen und für jede Zeile eine gespeicherte Prozedur ausführen?

Linda Hamilton
Linda HamiltonOriginal
2025-01-01 08:03:09863Durchsuche

How Can I Iterate Through T-SQL Query Results and Execute a Stored Procedure for Each Row?

T-SQL-Schleife durch Abfrageergebnisse

Angenommen, Sie haben eine Abfrage, die eine Liste von IDs aus einer Tabelle abruft:

SELECT @id=table.id FROM table

Sie müssen dann für jede Zeile eine gespeicherte Prozedur ausführen und dabei die ID und eine weitere übergeben Wert:

EXEC stored_proc @varName=@id, @otherVarName='test'

In T-SQL können Sie dies mit einem CURSOR erreichen:

DECLARE @id INT
DECLARE @name NVARCHAR(100)
DECLARE @getid CURSOR

SET @getid = CURSOR FOR
SELECT table.id,
       table.name
FROM   table

OPEN @getid
FETCH NEXT
FROM @getid INTO @id, @name
WHILE @@FETCH_STATUS = 0
BEGIN
    EXEC stored_proc @varName=@id, @otherVarName='test', @varForName=@name
    FETCH NEXT
    FROM @getid INTO @id, @name
END

CLOSE @getid
DEALLOCATE @getid

In diesem Skript:

  • Wir deklarieren drei Variablen : @id (INT), @name (NVARCHAR(100)) und ein CURSOR namens @getid.
  • Wir setzen @getid zu einem CURSOR, der die ID- und Namensspalten aus der Tabellentabelle auswählt.
  • Wir öffnen den CURSOR, holen die erste Zeile und speichern die Ergebnisse in @id und @name.
  • Wir treten in eine WHILE-Schleife ein, die so lange fortgesetzt wird, wie der @@FETCH_STATUS-Wert 0 ist (was anzeigt, dass eine Zeile erfolgreich war). abgerufen).
  • Innerhalb der Schleife führen wir die gespeicherte Prozedur aus und übergeben @id, den Literalwert „test“ für den @otherVarName-Parameter und den abgerufenen Namenswert für den @varForName-Parameter.
  • Wir rufen die nächste Zeile ab und speichern die Ergebnisse in @id und @name.
  • Wenn keine weiteren Zeilen mehr abzurufen sind, schließen wir und heben die Zuordnung auf der CURSOR.

Mit diesem Skript können Sie die Abfrageergebnisse durchlaufen und die gespeicherte Prozedur für jede Zeile ausführen, wobei die Variablennamen und -werte basierend auf den Daten in der Abfrage aktualisiert werden.

Das obige ist der detaillierte Inhalt vonWie kann ich T-SQL-Abfrageergebnisse durchlaufen und für jede Zeile eine gespeicherte Prozedur ausführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn