Цикл, содержащий DBMS_OUTPUT.PUT_LINE, не будет бесконечным (если выход сервера включен), поскольку, в конце концов, он заполнит весь выходной буфер или доступную память. Раньше лимит составлял около 1 миллиона байт, так что он попадал бы довольно быстро. Если он заполняет всю память компьютера, это может занять довольно много времени.
В бесконечных циклах я прошел через неудачную попытку забыть перейти к следующему элементу в таблице.
DECLARE
type typ_tab is table of varchar2(10) index by pls_integer;
t_tab typ_tab;
v_ind number;
BEGIN
t_tab(10) := 'A';
t_tab(20) := 'B';
v_ind := t_tab.first;
WHILE v_ind IS NOT NULL LOOP
dbms_output.put_line(t_tab(v_ind));
v_ind := t_tab.next(v_ind); --Forget this and it loops forever
END LOOP;
END;
Как только они попадут в такой цикл, администратор базы данных может прервать сеанс.