WHENEVER в Oracle SQL. Введение
WHENEVER — это команда, используемая в Oracle SQL*Plus, а не в самом SQL. Она позволяет задать, что делать при возникновении ошибки: завершить скрипт, перейти к следующей команде, прервать выполнение и т.д. Это очень важно при написании автоматических SQL-скриптов, особенно в CI/CD, миграциях и админ-задачах.
🔤 Написание
🔄 Где используется
Обработка ошибок в SQL*Plus
Защита автоматизированных сценариев
Управление поведением при сбоях в DDL/DML
Тестирование и отладка
Сценарии установки и миграции БД
🧪 10 Примеров использования WHENEVER
1️⃣ Прервать скрипт при любой SQL-ошибке
Завершает выполнение скрипта, возвращая код ошибки операционной системе.
2️⃣ Продолжить выполнение скрипта при SQL-ошибке
3️⃣ Завершить скрипт при ошибке операционной системы
4️⃣ Включение управления и INSERT с ошибкой
5️⃣ Обработка в install.sql сценариях
6️⃣ Возврат пользовательского кода ошибки
7️⃣ Продолжение после OSERROR
8️⃣ Обработка с вызовом shell-скрипта
9️⃣ Сброс поведения (удаление директивы)
В SQL*Plus нет прямой команды UNSET, но можно перезаписать:
🔟 Проверка текущего поведения
🧩 WHENEVER в Oracle SQL. Заключение
WHENEVER — незаменимая директива для надежного и контролируемого исполнения SQL-скриптов в SQL*Plus. Она позволяет правильно реагировать на ошибки и предотвращать частичные изменения данных или некорректную установку БД.
💡 Запомни:
Только для SQL*Plus (не работает в SQL Developer или PL/SQL)
Управляет реакцией на SQL- и OS-ошибки
Часто применяется в миграциях, CI/CD, автоинсталляциях
Используется в начале скриптов
🔜 Следующая статья:
WAIT в Oracle SQL — как управлять ожиданием блокировок и поведения