Команда 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 */