如果你想在某个特定事件发生时向应用程序的用户发出一些警告信息,而事件本身不会抛出Oracle内部异常,这个异常是属于应用程序的特定异常,那么就需要自定义异常。
用户定义的异常错误是通过显式使用raise语句来触发的,当引发一个异常错误时,控制就转向到Exception块异常错误部分,执行错误处理代码。
处理步骤:
1:在PL/SQL块的声明部分定义异常情况:
异常情况 exception
2:raise 异常情况的名称
3:在PL/SQL块的异常情况处理部分对异常情况做出相应的处理。
示例:
Declare
v_empno emp.empno%Type:=&empno;
e_no_result exception;
begin
update emp set sal =sal+100 where empno=v_empno;
if sql%notfound then
raise e_no_result;
else
commit;
end if;
Exception
when e_no_result then
DBMS_OUTPUT.put_line('数据更新失败!');
when others then
DBMS_OUTPUT.put_line('其他错误!');
end;
在PL/SQL中使用SQLCODE和SQLERRM的使用
SQLCODE是取得错误号 SQLERRM是取得错误信息
多用于when others then这个分支
RAISE_APPLICATION_ERROR
该过程用于在PL/SQL子程序中自定义错误信息。
语法格式:
raise_application_error(error_number,message);
error_number:用于定义错误号
message:用于指定错误信息,长度不能超过2048个字节