EXIT в PL/SQL — как выйти из цикла по условию

🟢 EXIT в PL/SQL. Введение

Когда в PL/SQL выполняется цикл, нередко возникает необходимость выйти из него досрочно, если выполнено определённое условие. Для этого используется оператор EXIT.

EXIT завершает текущий цикл (LOOP, FOR, WHILE) и передаёт управление за его пределы. Без него цикл будет выполняться до естественного конца или бесконечно, если это LOOP.


🔤 Написание

plsql
EXIT [WHEN условие];
  • EXIT; — безусловный выход из цикла

  • EXIT WHEN условие; — выход при выполнении условия


🔄 Где используется EXIT в PL/SQL

  • Завершение бесконечного цикла (LOOP)

  • Прерывание цикла FOR или WHILE раньше времени

  • Реализация поисков, когда найден результат

  • Обработка ошибок и критических условий внутри итераций


🧪 10 Примеров использования EXIT

1️⃣ Выход из бесконечного цикла

plsql
LOOP
EXIT WHEN counter > 10;
counter := counter + 1;
END LOOP;

2️⃣ Прерывание цикла по условию

plsql
FOR i IN 1..100 LOOP
IF i = 5 THEN
EXIT;
END IF;
DBMS_OUTPUT.PUT_LINE(i);
END LOOP;

3️⃣ Поиск значения и выход

plsql
FOR emp IN (SELECT * FROM employees) LOOP
IF emp.name = 'Иванов' THEN
DBMS_OUTPUT.PUT_LINE('Найден!');
EXIT;
END IF;
END LOOP;

4️⃣ Использование EXIT внутри WHILE

plsql
i := 1;
WHILE i <= 10 LOOP
EXIT WHEN i = 7;
DBMS_OUTPUT.PUT_LINE(i);
i := i + 1;
END LOOP;

5️⃣ EXIT внутри вложенного цикла

plsql
FOR i IN 1..3 LOOP
FOR j IN 1..3 LOOP
EXIT WHEN j = 2;
DBMS_OUTPUT.PUT_LINE('i=' || i || ', j=' || j);
END LOOP;
END LOOP;

6️⃣ Завершение цикла после 1 удачного шага

plsql
FOR row IN (SELECT * FROM orders WHERE status = 'NEW') LOOP
PROCESS_ORDER(row.id);
EXIT; -- только один обрабатываем
END LOOP;

7️⃣ Прерывание при ошибке

plsql
FOR i IN 1..10 LOOP
BEGIN
-- операция
EXCEPTION
WHEN OTHERS THEN
EXIT;
END;
END LOOP;

8️⃣ Проверка наличия значения

plsql
found := FALSE;
FOR rec IN (SELECT id FROM data) LOOP
IF rec.id = 100 THEN
found := TRUE;
EXIT;
END IF;
END LOOP;

9️⃣ Использование EXIT в LOOP без условия

plsql
LOOP
DBMS_OUTPUT.PUT_LINE('Привет');
EXIT;
END LOOP;

🔟 Использование в процедуры с условием

plsql
PROCEDURE check_values IS
BEGIN
FOR i IN 1..100 LOOP
IF MOD(i, 17) = 0 THEN
EXIT;
END IF;
END LOOP;
END;

🧩 Заключение

Оператор EXIT — это безопасный и контролируемый способ завершения цикла в PL/SQL. Он делает код гибким, особенно в ситуациях, когда невозможно заранее определить количество итераций.

💡 Запомни:

  • EXIT работает только в цикле

  • Можно использовать EXIT WHEN для условного выхода

  • Отлично сочетается с LOOP, FOR, WHILE


🔜 Следующая статья:

EXCLUSIVE в Oracle SQL — как ограничивать параллельный доступ и блокировать ресурсы


 

Понравилась статья? Поделиться с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии