Det enklaste sättet att iterera över raderna i en tabell i PL/SQL är att göra något liknande
BEGIN
FOR employees IN (SELECT emp_id FROM emp)
LOOP
dbms_output.put_line( employees.emp_id );
END LOOP;
END;
Alternativt kan du hämta alla EID-värden till en PL/SQL-samling och iterera över samlingen, som i det här exemplet
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;
Om din fråga kan returnera tusentals rader, kan dock hämtning av all data till samlingen använda mer av PGA-minnet än du vill och du kan behöva hämta rader i bitar med hjälp av LIMIT-satsen. Men det verkar vara att gå före oss själva vid det här laget.