如果我有table_abc。现在我改变并添加几个列,如
alter table_Abc add ( congif_id number, sso number);
现在我第二次添加几列以及congif_id和sso,如:
alter table_Abc add ( congif_id number, sso number,name varchar2(100));
但这会引发错误column already exists.
即使名称相同并且添加新脚本,alter脚仍然无法运行吗?
答案 0 :(得分:1)
不,这是错误的预期。如有必要,您可以使用动态SQL重新运行DDL脚本,例如:
begin
execute immediate
'alter table table_Abc add ( congif_id number)';
exception
when others then
if sqlcode = -1430 then
null;
end if;
end;
begin
execute immediate
'alter table table_Abc add ( sso number)';
exception
when others then
if sqlcode = -1430 then
null;
end if;
end;
...
或者如果你做了很多这样的事情:
declare
procedure run_ddl
( p_sql varchar2
, p_ignored_exception integer
)
is
begin
execute immediate p_sql;
exception
when others then
if sqlcode = p_ignored_exception then
null;
end if;
end;
begin
run_ddl ('alter table table_Abc add ( congif_id number)', -1430);
run_ddl ('alter table table_Abc add ( sso number)', -1430);
end;