ORACLE例外(异常)

来源:互联网 发布:双11销售额包括淘宝吗 编辑:程序博客网 时间:2024/05/16 05:20

ORACLE异常处理:

在Oracle数据库中主要分为三类异常:

                                 1,预定义的Oracle数据库错误;

                                 2,非预定义的Oracle数据库错误;

                                  3,用户定义的错误;

----预定义异常 --在Oracle中已经预先定义好名称的异常;

     常见的有: no_data_found ; 没有找到数据

                too_many_rows;   找到太多数据

                invalid_cursor; 失效的游标

                zero_divide;     除数为零  捕捉异常方法--直接在异常处理程序中按名称进行捕捉。通过用when 子句。

----非预定义异常--在数据库中没有定义异常名称的异常;为了捕捉到非预定义的异常,必须先创建一个异常名称,然后将错误编号和刚刚创建的异常名称关联起来,这样就可以在异常处理部分通过定义的异常名称来捕捉这个异常了。

----用户自定义异常 --当数据库的一些情况不符合用户的规定时,用户人为判断的异常。需要在声明部分定义异常的名称,然后在执行体中,通过一些逻辑判断决定是否违反了用户的规则,如果违反,则调用raise命令人为触发刚才定义的异常,并在异常处理部分捕捉到这个异常进行处理。

为了能够记录发生的错误信息,Oracle提供了两个相关函数:

                1,sqlcode: 返回错误代码

                2,sqlerrm:返回与错误代码关联的消息

异常是自里向外逐级传递的

 

案例1:如果empno的值不存在的时候取到将会是null,此时我们要进行捕获

declare

  v_ename varchar2(5);

  v_sal number(7,2);

begin

select ename,sal into v_ename,v_sal from emp  where empno=&no;

dbms_output.put_line('雇员名:'||v_ename||'工资'||v_sal);

--异常处理

exception

when no_data_found then

dbms_output.put_line('朋友,你输入的编号有误!');

end;

/

 

Exception

    When others then --异常祖宗

       Rollback;

                      Exception

       when others then

             dbms_output.put_line("全项目-复制认购计划数据异常!");

         roolback;

                           excetpion

                when no_data_found then

                 v_JIAOLOUJIHUANID:=null;

0 0
原创粉丝点击