显式抛出异常

RAISE_APPLICATION_ERROR

只能从一个被存储的子程序或者方法中调用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;