Comenzi de control al cursorului: DECLARE, OPEN, FETCH si CLOSE.
DECLARE– poate
sa apara ca si comanda de control al cursorului.
OPEN – realizeaza
deschiderea unui cursor astfel încât acesta sa poata
fi utilizat.
Este folosita in cadrul actiunilor executabile dintr-un bloc, si stabileste
un set activ de rinduri.
OPEN cursor-identif [(lista
argumente)] ;
Exemple:
OPEN c1;
Cursorul va indica primul rind in setul activ, ca de exemplu:
> SCOTT 3000 16-jan-90
FORD 3000 03-dec-81
BEGIN
open
employee_cursor;
declaratie
1;
declaratie
2;
...
END
FETCH – populeaza
o variabila cu valori dintr-un cursor. Pot fi populate atât variabile
agregat cât si variabile individuale.
FETCH cursor-id INTO var, var,... ;
Variabilele trebuie sa fie specificate pentru fiecare camp selectat
in cererea de cursor. O alta posibilitate este definirea unei inregistrari
pentru cursor, si transmiterea sa ca o clauza a FETCH.
Exemple
FETCH c1 INTO v_ename, v_sat, v_hiredate;
Variabilele incarcate, care au fost declarate inainte
de FETCH, pot fi manipulate de alte instructiuni.
FETCH-uri ulterioare vor achizitiona alte rinduri
individuale din interogare. De notat ca primul FETCH care nu obtine nimic,
adica daca nu mai ramin rinduri, nu va cauza o eroare. Variabilele vor
contine valori nule.
DECLARE
cursor
employee_cursor is
select
emp_id, emp_name from employees;
employee_record
employee_cursor%ROWTYPE;
BEGIN
open
employee_cursor;
loop
fetch employee_cursor into employee_record;
end loop;
close
employee_cursor;
END
DECLARE
cursor employee_cursor is
select emp_id, emp_name from employees;
id_num employees.emp_id%TYPE;
name employees.emp_name%TYPE;
BEGIN
open employee_cursor;
loop
fetch employee_cursor into id_num, name;
end loop;
close employee_cursor;
END
CLOSE – închide un cursor dupa utilizarea acestuia. Dupa
închiderea unui cursor, rezultatul interogarii nu mai exista. Pentru
a accesa multimea datelor asociate trebuie redeschis cursorul.
CLOSE cursor-identif ;
Exemplu
BEGIN
open
employee_cursor;
comanda1;
comanda 2;
.....
close
employee_cursor;
END