Най-простият начин за итериране на редовете в таблица в PL/SQL е да направите нещо като
BEGIN
FOR employees IN (SELECT emp_id FROM emp)
LOOP
dbms_output.put_line( employees.emp_id );
END LOOP;
END;
Като алтернатива можете да извлечете всички стойности на EID в PL/SQL колекция и да итерирате колекцията, както в този пример
DECLARE
TYPE emp_id_tbl IS TABLE OF emp.emp_id%type;
l_emp_ids emp_id_tbl ;
BEGIN
SELECT emp_id
BULK COLLECT INTO l_emp_ids
FROM emp;
FOR i IN l_emp_ids .FIRST .. l_empnos.LAST
LOOP
dbms_output.put_line( l_emp_ids (i) );
END LOOP;
END;
Ако вашата заявка обаче може да върне хиляди редове, извличането на всички данни в колекцията може да използва повече от PGA паметта, отколкото бихте искали, и може да се наложи да извличате редове на части, като използвате клаузата LIMIT. Но изглежда, че на този етап изпреварваме нещата.