Najprostszym sposobem na iterację wierszy w tabeli w PL/SQL jest wykonanie czegoś takiego jak
BEGIN
FOR employees IN (SELECT emp_id FROM emp)
LOOP
dbms_output.put_line( employees.emp_id );
END LOOP;
END;
Alternatywnie możesz pobrać wszystkie wartości EID do kolekcji PL/SQL i iterować po kolekcji, jak w tym przykładzie
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;
Jeśli jednak zapytanie może zwrócić tysiące wierszy, pobranie wszystkich danych do kolekcji może zająć więcej pamięci PGA niż byś chciał i może być konieczne pobieranie wierszy porcjami za pomocą klauzuli LIMIT. Ale w tym momencie wydaje się, że to nas wyprzedza.