Wenn wir SELECT-Abfrageanweisungen verwenden, beziehen sie sich im Allgemeinen alle auf eine Zeile von Datensätzen (d. h. einen Datensatzsatz) im Abfrageanalysator, dann müssen Sie Cursor oder verwenden WHILE-Schleifen
Arten von Cursorn:
1. Statischer Cursor (erkennt keine Änderungen in Datenzeilen)
2. Dynamischer Cursor (spiegelt Änderungen in allen Datenzeilen wider))
3. Nur Vorwärtscursor (Scrollen wird nicht unterstützt)
4. Keyset-Cursor (kann Änderungen widerspiegeln, aber Einfügungen und Löschungen nicht genau wiedergeben)
1, Cursor definieren
2. Cursor öffnen
3. Cursor verwenden
4. Cursor schließen
5. Cursor loslassen
Cursorname Cursor [LOCAL][FORWARD_ONLY |. SCROLL][STATIC |. DYNAMIC] [READ_ONLY | vorwärts SCROLL scrollen
STATIC static KEYSET key set DYNAMISCH dynamisch
READ_ONLY read-only SCROLL_LOCKS sperren die aktuelle Zeile des Cursors
Holen Sie sich die Daten des Cursors
FETCH [[NEXT | FIRST |. LAST |.
ABSOLUTE{ n |. @nvar |
RELATIVE n Zeile n ausgehend von der aktuellen Position
in Variable Weisen Sie der Variablen die Feldwerte der aktuellen Zeile zu
Cursor-Statusvariable:
@@fetch_status Cursorstatus
0 Erfolg -1 Fehler -2 Verloren
@@cursor_rows Anzahl der Zeilen im Cursor-Ergebnissatz
n Anzahl der Zeilen -1 Cursor ist dynamisch 0 Leerer Satzcursor
Bedienen Sie die aktuelle Zeile des Cursors:
Beispiel 1: Verwenden Sie den Cursor, um den abgefragten Datensatz zu durchlaufen
verwenden Sie Pubs
gehen
au_id, au_lname, au_fname, state auswählenvon Autorenauth_cur öffnennächstes von auth_cur in @auid,@aulname,@aufname abrufen , @stwhile (@@fetch_status=0) begin print 'Autorennummer: '+@auid print 'Autorenname: '+@aulname+ ','+@aufname print 'State: '+@st print '------------------ --- -----'fetch next from auth_cur into @auid,@aulname,@aufname, @st endclose auth_curauth_cur freigebenBeispiel 2: Cursor verwenden, um Daten zu ändern und zu löschenauth_cur deklarieren, Cursor scrollen fürau_id, au_lname, au_fname, Status auswählenvon Autoren zur Aktualisierung von au_lnameopen auth_curdeclare @rowcount intset @rowcount = 6fetch absolute @rowcount from auth_cur -- Ändern Sie die Variable @rowcount. Die identifizierte Zeile wird auf die aktuelle Zeile gesetzt --die folgende Zeile wird mit dem Cursor geändertUpdate Authors Set au_lname='Zhang' where current of auth_cur-- Ändern Sie die aktuelle Zeile im Cursor --Die folgende Zeile verwendet einen Cursor, um einen Löschvorgang auszuführen löschen von Autoren, wo aktuell von auth_cur