Oracle PL/SQL开发基础(第三十四弹:RAISE_APPLICATION_ERROR)

RAISE_APPLICATION_ERROR在子程序内部使用时,能从存储子程序中抛出自定义的错误消息。这样就能将错误报告给应用程序而避免范围未捕获异常。

语法如下:

RAISE_APPLICATION_ERROR(error_number, error_message, [keep_errors]);

error_number是范围在-20000到-20999之间的负整数,error_message是最大长度为2048字节的字符串,keep_errors是一个可选的布尔值,True表示新的错误将被添加到已经抛出的错误列表中,False表示新的错误将替换当前的错误列表,默认为False。

RAISE_APPLICATION_ERROR只能在存储的子程序中调用。当被调用时,将结束当前的子程序并返回一个用户自定义的错误代码和错误消息给应用程序,这些错误代码和错误消息可以像任何的Oracle错误一样被捕获。

看一个例子:

CRAETE OR REPLACE PROCEDURE  registeremployee(...)
AS
    ...
BEGIN
    IF ... THEN
        RAISE_APPLICATION_ERROR(-20000, '员工编号不能为空');
    ELSIF ... THEN
        RAISE_APPLICATION_ERROR(-20001, '员工已存在');
    END IF;
    ...
EXCEPTION 
    WHEN OTHERS THEN
        RAISE_APPLICATION_ERROR(-20003, '插入数据时出现错误!异常编码:' 
                                         || SQLCODE 
                                         || '异常描述:'
                                         || SQLERRM);
END;

别的子程序或语句块调用这个过程时,如果有相应的异常,就会像普通的Oracle错误一样被捕获。

你可能感兴趣的:(Oracle)