ITPub博客

首页 > 数据库 > Oracle > oracle自定义异常

oracle自定义异常

原创 Oracle 作者:z123zjf 时间:2016-10-13 10:02:07 0 删除 编辑
不声明异常,使用使用raise_application_error抛出只有错误数字(-20999,-20000)和错误信息的异常,不能通过名称捕获,可以通过错误的数字得到自定义的异常信息。
declare
  v_bool boolean := true;
begin
  if v_bool then
    raise_application_error(-20000, 'abc');
  else
    raise_application_error(-20001, 'def');
  end if;
exception
  when others then
    if sqlcode = -20000 then
      dbms_output.put_line('is:abc');
    elsif sqlcode = -20000 then
      dbms_output.put_line('is:def');
    else
      dbms_output.put_line(sqlerrm);
    end if;
end;



声明一个异常,没有该异常的描述,可以通过名称捕获
declare
  e_a exception;
begin
  raise e_a;
exception
  when e_a then
    dbms_output.put_line(sqlerrm);
  when others then
    dbms_output.put_line(sqlerrm);
end;

exception_init可以将定义的异常名称和一个指定的错误数字关联到一起,通过名称捕获该异常
declare
  e_a exception;
  pragma exception_init(e_a,-20000);
begin
  raise_application_error(-20000,'abc');
exception
  when e_a then
    dbms_output.put_line('is:abc');
  when others then
    dbms_output.put_line(sqlerrm);
end;


sqlcode是异常的代码,sqlerrm是异常的信息,dbms_utility.format_error_backtrace返回抛出异常的行。
declare
  e_a exception;
begin
  raise e_a;
exception
  when e_a then
    dbms_output.put_line(sqlcode);
    dbms_output.put_line(sqlerrm);
    dbms_output.put_line(dbms_utility.format_error_backtrace);
end;



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

上一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2015-07-22

  • 博文量
    12
  • 访问量
    10300