异常的认识
异常就是在Oracle数据库中运行时出现的错误
异常在PL/SQL执行过程中很可能出现
对异常如果不进行处理,异常会中断程序的运行
语法:
EXCEPTION
WHEN exception1 [OR exception2 . . .] THEN
statement1;
statement2;
. . .
[WHEN exception3 [OR exception4 . . .] THEN
statement1;
statement2;
. . .]
[WHEN OTHERS THEN
statement1;
statement2;
. . .]
捕获异常的规则
EXCEPTION 关键词开始异常处理部分
WHEN OTHERS 为最后的一条子句
可以设置多个异常处理句柄
在异常块中,只有一个句柄会处理异常
1、预定义异常(总计21种,具体见文档)
NO_DATA_FOUND --ORA-01403-- 未找到行
TOO_MANY_ROWS --ORA-01422--SELECT INTO 语句返回多行数据
VALUE_ERROR --ORA-06502-- 类型转换错误
ZERO_DIVIDE --ORA-01476-- 程序尝试除以 0
STORAGE_ERROR --ORA-06500--PL/SQL 运行时内存溢出或内存不足
2、非预定义异常(EXCEPTION_INIT )
需要在declare中申明,申明后使用即与预定义异常相同。
案例1:
declare
emp employees%rowtype;
begin
select * into emp from employees where employee_id = 333;
--异常开始捕获
exception
when TOO_MANY_ROWS then dbms_output.put_line('查询的条数过多啦!');
when NO_DATA_FOUND then dbms_output.put_line('没有找到数据哦!');
when OTHERS then dbms_output.put_line('其它错误!');
end;