Extras din curs
Cursoarele SQL reprezintă o modalitate de parcurgere secvențială a unui set de înregistrări returnat de o frază SQL de tip SELECT.
Sintaxa pentru declararea unui cursor:
DECLARE nume_cursor CURSOR
[ FORWARD_ONLY | SCROLL ]
[ STATIC | KEYSET | DYNAMIC | FAST_FORWARD ]
[ READ_ONLY | SCROLL_LOCKS | OPTIMISTIC ]
FOR instructiune_SQL_SELECT
[ FOR UPDATE [ OF nume_coloana [ ,...n ] ] ]
• SCROLL – permite operațiile FIRST, LAST, PRIOR, NEXT, RELATIVE, ABSOLUTE pentru deplasarea în cadrul înregistrărilor cursorului
• FORWARD_ONLY – permite deplasarea numai în modul “înainte” în cadrul înregistrărilor cursorului.
• STATIC – determina realizarea unei copii temporare a setului de înregistrări pe care se lucrează. În cazul în care se fac modificări în tabelele folosite ca sursă de către cursor, acestea nu se reflectă în cadrul setului de înregistrări virtual, asociat cursorului. Cursorul nu este actualizabil.
• DYNAMIC – permite ca orice modificare efectuată în tabelele sursă ale cursorului să se reflecte automat în setul de înregistrări asociat acestuia. În acest tip de cursor nu se poate utiliza ABSOLUTE.
• FAST_FORWARD – se utilizează pentru a optimiza accesul la înregistrările cursorului (numai “inainte”).
• KEYSET – specifică faptul că înregistrările din cursor sunt deschise într-o anumită ordine.
• SCROLL_LOCKS – blochează înregistrările care se citesc (pentru ceilalţi utilizatori), în aşa fel încât orice actualizare încercată pe înregistrările citite să se efectueze cu succes.
• OPTIMISTIC – nu blochează înregistrările citite, însă în cazul în care alţi utilizatori efectueză actualizări pe aceleaşi înregistrări cu cele din cursor, iar cel care utilizează cursorul încearcă şi el modificări, se citeşte valoarea coloanei timestamp, iar în cazul în care se detectează că s-au efectuat actualizări de către alţi utilizatori, atunci actualizarea iniţiată în cursor va eşua.
• READ ONLY – nu sunt permise modificările/ștergerile în cadrul înregistrărilor cursorului
• În fraza SQL de selecție nu sunt permise clauzele COMPUTE, COMPUTE BY și INTO
• UPDATE [OF nume_coloana [ ,...n ] ] ] – stabilește o coloană sau mai multe coloane pe care se pot face actualizări în cadrul înregistrărilor cursorului
OPEN nume_cursor
Executa instructiunile T-SQL declarate in cursor si incarca in memorie setul de inregistrari rezultat.
CLOSE nume_cursor
Inchide cursorul, orice blocaje induse de acesta inregistrarilor din tabelele folosite de cursor fiind sterse.
DEALLOCATE nume_cursor
Elibereaza memoria ocupata de cursor.
FETCH
Accesează o înregistrare din cursor. Sintaxa:
FETCH
[ [ NEXT | PRIOR | FIRST | LAST
| ABSOLUTE { n | @nvar }
| RELATIVE { n | @nvar }
]
FROM
]
Nume_cursor
[ INTO @variable_name [ ,...n ] ]
ABSOLUTE { n | @nvar}
- dacă n este un număr pozitiv se returnează înregistrarea cu numărul n, calculată în raport cu începutul cursorului.
- - dacă n este un număr negativ se returnează înregistrarea cu numărul n, calculată în raport cu sfărşitul cursorului.
Preview document
Conținut arhivă zip
- Cursoare SQL Server 2008.doc