Cursor sind eine Struktur in programmierbare Versionen von Structured Query Language (SQL) , wie Sybase oder Microsoft SQL Server Transact- SQL bereitgestellt . Definieren Sie einen Cursor für eine select oder Update SQL-Anweisung auf eine oder mehrere Tabellen . Der Cursor hat einen Namen, den Sie verwenden, um zu finden , öffnen und schließen Sie den Cursor oder holen Zeilen aus dem Cursor -Set kann . Cursor werden verwendet, wenn jede Zeile in der Menge Verarbeitung braucht oder seine Werte sind in Programm verwendeten Variablen . Wenn ein neuer Cursor in der Schleife , die jede Zeile eines Cursors verarbeitet deklariert, dann wird die neue innere Cursor innerhalb der alten äußeren Cursor verschachtelt . Anleitung
1
Deklarieren Sie einen Cursor für eine einfache select-Anweisung mit dem folgenden T- SQL-Syntax :
DECLARE CURSOR
FÜR SELECT Feld1 , Feld2 , field3
FROM
WHERE field4 <= @ limitval
2
Öffnen Sie den Cursor für die Verarbeitung mit diesen T- SQL Syntax :
OPEN
3 Fetch Zeilen aus dem geöffneten Cursor für die Verarbeitung, da es ein read ( select) Cursor . Deklariert Variablen erforderlich, um Werte der Felder in der aktuellen Cursor- Zeile zu speichern . Der T- SQL-Syntax zum Abrufen Cursor Zeilen ist wie folgt:
WEITER VOM FETCH INTO @ var_fld1 , @ var_fld2 , @ var_fld3
während @ @ fetch_status == 0
beginnen
--- < Prozess aktuellen Cursor- Zeile hier >
WEITER VOM FETCH INTO @ var_fld1 , @ var_fld2 , @ var_fld3
Ende
4
Fügen Sie die Deklaration und die Ausführung des zweiten oder inneren Cursor in das holen Schleife des vorherigen oder äußeren Cursor wie folgt:
- outer Cursor holen Schleife
während @ @ fetch_status == 0
beginnen
< Prozess aktuellen Zeile des äußeren Cursor hier >
- Zeit zu erklären, die innere Cursor - Verschachtelung beginnt
DECLARE CURSOR inner_cursor
FOR SELECT X , Y , Z, ....
FROM Tabelle1 , Tabelle2 , ...
WHERE
OPEN inner_cursor
WEITER VOM FETCH INTO @ inner_cursor varX , @ variieren , @ VARZ ...
während @ @ fetch_status == 0
beginnen - innere Cursor holen Schleife
-
- get nächste Zeile
wEITER VOM FETCH inner_cursor INTO @ varX , @ variieren , @ VARZ ...
Ende - innere Cursor holen Schleife
Ende - outer Cursor holen Schleife