create or replace procedure pr_test_def_exception

as

v_error varchar2(200);

v_cnt varchar2(200);

v_sal number;

EX_RESOURCE_BUSY EXCEPTION;

PRAGMA EXCEPTION_INIT(RESOURCE_BUSY, -54);

begin

  --另开会话,执行lock table scott.bonus in exclusive mode

  select sal into v_sal from scott.bonus where ename='majunjie' for update nowait;

  update scott.bonus set sal=2000 where ename='majunjie';

  dbms_output.put_line(v_cnt);

exception

  when RESOURCE_BUSY then

    v_error := sqlerrm;

    dbms_output.put_line(v_error);--ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired

  when others then

    v_error := sqlerrm;

    dbms_output.put_line(111);

end;