http://www.itpub.net/thread-1418343-1-1.html
这里有人问到了,试了下,这样可以做到。
declare
cacel_create EXCEPTION;
PRAGMA EXCEPTION_INIT(cacel_create, -1013);
v_dt_bak varchar2(20) := 'tt_bak';
v_dt varchar2(20) := 'tt';
begin
begin
/* v_dt := 'tt';
v_dt_bak := 'tt_bak';*/
execute immediate 'create table ' || v_dt_bak || '(id number)';
/* execute immediate 'insert into tt select object_id from all_objects union select object_id from all_objects union select object_id from all_objects '; */
dbms_lock.sleep(10);
exception
when cacel_create then
raise;
execute immediate 'rename ' || v_dt_bak || ' to ' || v_dt || '';
end;
end;
注意raise的位置,必须有,否则最后的execute immediate无法正确执行
这里有人问到了,试了下,这样可以做到。
declare
cacel_create EXCEPTION;
PRAGMA EXCEPTION_INIT(cacel_create, -1013);
v_dt_bak varchar2(20) := 'tt_bak';
v_dt varchar2(20) := 'tt';
begin
begin
/* v_dt := 'tt';
v_dt_bak := 'tt_bak';*/
execute immediate 'create table ' || v_dt_bak || '(id number)';
/* execute immediate 'insert into tt select object_id from all_objects union select object_id from all_objects union select object_id from all_objects '; */
dbms_lock.sleep(10);
exception
when cacel_create then
raise;
execute immediate 'rename ' || v_dt_bak || ' to ' || v_dt || '';
end;
end;
注意raise的位置,必须有,否则最后的execute immediate无法正确执行
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25702/viewspace-692601/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/25702/viewspace-692601/