Я не семья с PL / SQL.Может кто-нибудь объяснить, почему я не могу сделать следующее?
BEGIN
IF TRUE THEN
CREATE INDEX TestIndex ON SomeTable (SomeColumn);
END IF;
END;
Я получил бы следующую ошибку:
Отчет об ошибке: ORA-06550: строка 3, столбец 5: PLS-00103: Обнаружен символ «CREATE» при ожидании одного из следующих действий: начать регистр объявить выход для goto, если цикл mod null прагма Повышение возвращение выбрать обновление, в то время как при << закрыть текущий удалить выборку заблокировать вставить вставить открытый откат набор точек сохранения sql выполнить commit forall merge pipe 06550. 00000 - «строка% s, столбец% s: \ n% s» * Причина: обычно ошибка компиляции PL / SQL.* Действие: </p>
Единственный способ обойти эту ошибку - сделать динамический sql:
BEGIN
IF TRUE THEN
EXECUTE IMMEDIATE 'CREATE INDEX TestIndex ON SomeTable (SomeColumn)';
END IF;
END;