Я пытаюсь запустить несколько операторов ddl в одном операторе Execute Immediate.
Я думал, что это будет довольно просто, но, похоже, я ошибаюсь.
Идея такова:
declare v_cnt number;
begin
select count(*) into v_cnt from all_tables where table_name='TABLE1' and owner = 'AMS';
if v_cnt = 0 then
execute immediate 'CREATE TABLE TABLE1(VALUE VARCHAR2(50) NOT NULL) ALTER TABLE TABLE1 ADD (MYVAL2 NVARCHAR2(10))';
end if;
end;
однако это приводит к ошибке
ORA-00911: недопустимый символ
ORA-06512: в строке 10
Каждый из операторов в пакете работает нормально, если я выполняю их самостоятельно. и если я возьму этот оператор и выполню его, он будет работать нормально (с; между 2 операторами). Если я удалю; между утверждениями я получаю другую ошибку о недопустимой опции
план состоит в том, что я смогу построить таблицу, экспортировать схему таблицы для этой таблицы, включая все ее операторы alter, а затем запустить пакет для другой системы в рамках процесса установки / обновления.
Итак, как мне пакетировать эти операторы DDL в пределах одного выполнения немедленно? Или есть лучший способ сделать то, что мне нужно?
Я немного новичок в Oracle, должен признать. Спасибо всем за терпение.