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