Sunteți pe pagina 1din 1

Un cursor este un pointer catre o zona de memorie in care este retinut rezultatul

unei interogari sql.


Cursoarele sunt de doua tipuri:
- Implicite
- Explicite

Cursoarele Implicite:
- se creeaza automat cand oracle executa interogari precum:
SELECT INTO, INSERT, UPDATE, and DELETE .
- Utilizatorul nu are access la zona de memorie, Oracle gestioneaza ciclul de
executie al interogari.
- Desi nu putem accesa zona de memorie, putem accesa informatii cu privire la
informatiile returnate de cursor sau status
prin atribute precum : SQL%ROWCOUNT, SQL%ISOPEN, SQL%FOUND, and SQL%NOTFOUND

EXEMPLU!!!

- sunt utilizate pentru a returna rezultatul intr-o singura linie, in caz contrar
se arunca exceptiile: NO_DATA_FOUND sau TOO_MANY_ROWS
EXEMPLU!!!

Cursoarele Explicite
- sunt declarate si folosite in scripturile PL/SQL. Ele sunt utilizate atunci cand
interogarile returneaza mai mai multe linii de rezultate
- sunt utilizate atunci cand interogarile returneaza mai mai multe linii de
rezultate astfel permitand prelucrarea rezultatelor linie cu linie
Pasii de urmat pentru utilizarea unui cursor explicit sunt: declarare -> deschidere
-> prelucrarea liniilor -> inchiderea cursorului
https://cdn.oracletutorial.com/wp-content/uploads/2017/11/plsql-cursor.png

- Formatul declararii unui cursor este:


DECLARE
CURSOR nume_cursor IS comanda_select;
....

- Cand deschidem cursorul oracle parseaza interogarea,aloca memorie, seteaza


variabilele, executa interogarea asociata, salveaza rezultatul in memorie
si pozitioneaza pointerul pe primul rand returnat

- deschiderea se face intre blocurile BEGIN END; si este de forma:


BEGIN
OPEN nume_cursor
....
END;

Prelucrarea datelor se face preferabil intr-o structura repetitiva


Se apeleaza comanda FETCH urmata de numele cursorului, de cuvantul INTO apoi de
variabilele in care vom retine valorile.
Comanda FETCH pe langa faptul ca atribuie valori variabelor are rolul si de a trece
pointerul la urmatoarea linie rezultata,
de aceea o buna practica este sa testam inainte daca selectul returneaza macar un
rezultat

S-ar putea să vă placă și