Самый простой способ перебора строк в таблице в 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.Но, похоже, сейчас мы забегаем вперед.