pl/sql有三种类型的异常错误
1. 预定义错误
oracle预定义的异常错误大约有24个,这种异常无需在程序中定义,由oracle自动将其引发。
ORA-1403 no_data_found select into 没有找到数据
ORA-1422 too_many_rows select into 返回多行
2. 非预定义错误
预定义之外其它标准的oracle错误,这种异常情况需要在程序中定义,由oracle自动将其引发。
2.1 在pl/sql块的定义部分定义异常情况
用户定义的异常错误是通过显示使用raise语句来触发。当引发一个异常错误时,控制就转向到exception块异常错误部分,执行错误处理代码。
3. 用户定义错误
程序执行过程中,出现编程人员认为的非正常情况,这种异常情况需要程序员在程序中定义,然后显示的在程序中将其引发。
exception;
declare
no_result exception;
begin
--sql语句
if sql%notfound then
raise no_result;
exception
when no_result then
dbms_output.put_line('没有结果异常')
end;
4. 在pl/sql中使用sqlcode、sqlerrm
为了得到完整的错误信息提示,我们可以使用sqlerrm和substr函数一起得到错误提示信息。
sqlcode 返回错误代码数字
sqlerrm 返回错误信息
eg:
sqlcode = -100 -->sqlerrm='no_data-found'
sqlcode = 0 -->sqlerrm='normal,successful completion'