A maneira mais simples de iterar sobre as linhas em uma tabela em PL/SQL é fazer algo como
BEGIN
FOR employees IN (SELECT emp_id FROM emp)
LOOP
dbms_output.put_line( employees.emp_id );
END LOOP;
END;
Como alternativa, você pode buscar todos os valores EID em uma coleção PL/SQL e iterar sobre a coleção, como neste exemplo
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;
Se sua consulta puder retornar milhares de linhas, no entanto, buscar todos os dados na coleção pode usar mais memória PGA do que você gostaria e pode ser necessário buscar linhas em partes usando a cláusula LIMIT. Mas isso parece estar nos antecipando neste momento.