显式抛出异常¶
RAISE_APPLICATION_ERROR¶
只能从一个被存储的子程序或者方法中调用RAISE_APPLICATION_ERROR函数,通过此调用,抛出用户自定义的异常并将异常号和错误消息返回给调用者。
语法:
参数:
error_code
和exception.error_code相关联,可以是表示NO_DATA_FOUND的数值100,也可以是任意的大于-10000000但是不等于-1403以外的任意负数。因为-1403是另一个表示NO_DATA_FOUND的数值。
Message
表示返回的消息提示,是最长为2048bytes的字符串。
说明:
在使用之前,如果由用户自定义的异常类型,必须通过EXCEPTION_INIT构建error_code和和用户自定义的异常类型的对应关系。
EXCEPTION_INIT具体语法如下:
PRAGMA EXCEPTION_INIT ( exception, error_code ) ;
如果指定标识符为TRUE,PLOSCAR会将error_code放到异常栈的栈顶,否则将异常栈替换为error_code。
示例:RAISE_APPLICATION_ERROR¶
-- 清理环境
DROP PROCEDURE proc;
create or replace procedure proc is
declare
s varchar(20):='hi';
begin
dbms_output.put_line('%proc' || s);
raise_application_error(-20004,'hello');
end;
/
exec proc;
ERROR, hello
--删除过程
DROP PROCEDURE proc;