Heim  >  Artikel  >  php教程  >  Die Verwendung von Cursorn in SQL

Die Verwendung von Cursorn in SQL

高洛峰
高洛峰Original
2016-12-14 11:20:481178Durchsuche

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)

Reihenfolge der Cursorverwendung:

1, Cursor definieren
2. Cursor öffnen
3. Cursor verwenden
4. Cursor schließen
5. Cursor loslassen

Transact-SQL:

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 |

LAST Letzte Zeile ABSOLUTE n Zeile n

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:

aktueller Name des Cursors


Beispiel 1: Verwenden Sie den Cursor, um den abgefragten Datensatz zu durchlaufen

verwenden Sie Pubs

gehen

deklarieren Sie @auid char(12),@aulname varchar(20),@aufname varchar(20), @st char(2),@auinfo varchar(50)

deklarieren Sie den auth_cur-Cursor für

au_id, au_lname, au_fname, state auswählen

von Autoren

auth_cur öffnen

nächstes von auth_cur in @auid,@aulname,@aufname abrufen , @st

while (@@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

end

close auth_cur

auth_cur freigeben

Beispiel 2: Cursor verwenden, um Daten zu ändern und zu löschen

auth_cur deklarieren, Cursor scrollen für

au_id, au_lname, au_fname, Status auswählen

von Autoren zur Aktualisierung von au_lname

open auth_cur

declare @rowcount int

set @rowcount = 6

fetch 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ändert

Update 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

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