异常的认识

异常就是在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;

posted on 2017-05-18 13:58  好好学习,天天睡觉  阅读(119)  评论(0编辑  收藏  举报