Я пытаюсь использовать ИСКЛЮЧЕНИЕ, КОГДА ДРУГИЕ для перехвата несуществующих таблиц, которые я пытаюсь УДАЛИТЬ, следующим образом:
begin
execute immediate 'drop table X';
exception when others then null;
end;
Если таблица x существует, и я запускаю ее, таблица удаляется, и всехорошо.Если я запустлю его снова, таблица не будет удалена, но из-за ИСКЛЮЧЕНИЯ сценарий будет выполняться успешно.Все идет нормально.
Проблема возникает, если я пытаюсь сделать это более одного раза.
Если я запускаю этот скрипт для удаления таблиц X и Y:
begin
execute immediate 'drop table X';
exception when others then null;
execute immediate 'drop table Y';
exception when others then null;
end;
Я получаю следующееинформация об ошибке:
Ошибка запуска в строке: 1 в команде -
begin
execute immediate 'drop table X';
exception when others then null;
execute immediate 'drop table Y';
exception when others then null;
end;
Отчет об ошибке - ORA-06550: строка 6, столбец 1: PLS-00103: Обнаружен символ «ИСКЛЮЧЕНИЕ»при ожидании одного из следующих действий:
(начинайте регистр, объявляйте конец, завершайте для goto, если цикл mod null прагма повышение поднимает возвращение выберите обновление, когда при нажатии << продолжить закрыть текущий удалить выборку заблокировать вставить вставить открытый откат сохранить точку сохранения set sql execute commit forallочистка канала слияния ORA-06550: строка 7, столбец 4: PLS-00103: Обнаружен символ «конец файла» при ожидании одного из следующих действий: </p>
конец, не прагма, конечный экземплярный порядок, переопределяющий статический конструктор элементакарта 06550. 00000 - «строка% s, столбец% s: \ n% s» * Причина: обычно ошибка компиляции PL / SQL. * Действие:
Что мне здесь не хватает? Если я удалил второйИСКЛЮЧЕНИЕ КОГДА-ЛИСценарий завершается ошибкой, если таблица Y не существует ... Мне нужно отловить эту ошибку ...