如何在pl/sql中捕获ora-01013错误

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无法正确执行

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25702/viewspace-692601/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/25702/viewspace-692601/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值