Команда CONTINUE в циклах PL/SQL Oracle
Команда CONTINUE используется для выхода из текущей итерации цикла и немедленного перехода к следующей итерации. Как и EXIT, эта команда существует в двух формах: безусловной (CONTINUE) и условной (CONTINUE WHEN).
Простой пример использования CONTINUE WHEN для пропуска итераций с четными значениями счетчика:
BEGIN
FOR l_index IN 1 .. 10
LOOP
CONTINUE WHEN MOD (l_index, 2) = 0;
DBMS_OUTPUT.PUT_LINE ('Счетчик = ' || TO_CHAR (l_index));
END LOOP;
END;
/
/*
Результат:
Счетчик = 1
Счетчик = 3
Счетчик = 5
Счетчик = 7
Счетчик = 9
*/
Конечно, того же эффекта можно добиться при помощи команды IF, но команда CONTINUE предоставляет более элегантный и понятный способ представления реализуемой логики.
Команда CONTINUE чаще всего применяется для модификации существующего кода с внесением целенаправленных изменений и немедленным выходом из цикла для предотвращения побочных эффектов.
Также команда CONTINUE пригодится для завершения внутренних циклов и немедленного продолжения следующей итерации внешнего цикла. Для этого циклам присваиваются имена при помощи меток. Пример:
BEGIN
<<outer>>
FOR outer_index IN 1 .. 5
LOOP
DBMS_OUTPUT.PUT_LINE (
'Внешний счетчик = ' || TO_CHAR (outer_index));
<<inner>>
FOR inner_index IN 1 .. 5
LOOP
DBMS_OUTPUT.PUT_LINE (
' Внутренний счетчик = ' || TO_CHAR (inner_index));
CONTINUE outer;
END LOOP inner;
END LOOP outer;
END;
/
/*
Результат:
Внешний счетчик = 1
Внутренний счетчик = 1
Внешний счетчик = 2
Внутренний счетчик = 1
Внешний счетчик = 3
Внутренний счетчик = 1
Внешний счетчик = 4
Внутренний счетчик = 1
Внешний счетчик = 5
Внутренний счетчик = 1
*/