我想一个内立即执行语句来运行多个DDL语句。 我认为这将是非常简单的,但似乎我错了。
我们的想法是这样的:
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个语句之间)。 如果我删除; 我语句之间获得有关无效选项不同的错误
该计划是,我就可以建一个表,导出表结构此表包括它所有的改变语句,然后运行对另一个系统批量为安装/更新过程的一部分。
所以,我怎么批次内的单个这些DDL语句立即执行? 还是有更好的方法做我需要我?
我有点甲骨文福利局的,我必须承认。 谢谢大家的耐心等待。