oracle exception

来源:互联网 发布:struts2源码分析 pdf 编辑:程序博客网 时间:2024/06/03 04:48

oracle的异常处理


系统定义的例外

    No_data_found   没有找到数据;

    Too_many_rows (产生于类似这些的语句 val := select * from table_name,即返回值为多行,但接收的是一行数据或某变量的变量)

    Zero_divide

    Timeout_on_resourse  该异常常出现在分布式数据库中,资源等待

注意,以上区分大小写,如果错误可以查看手册

错误号

异常错误信息名称

说明

ORA-0001

Dup_val_on_index

违反了唯一性限制

ORA-0051

Timeout_on_resource

在等待资源时发生超时

ORA-0061

Transaction_backed_out

由于发生死锁事务被撤消

ORA-1001

Invalid_CURSOR

试图使用一个无效的游标

ORA-1012

Not_logged_on

没有连接到ORACLE

ORA-1017

Login_denied

无效的用户名/口令

ORA-1403

No_data_found

SELECT INTO没有找到数据

ORA-1422

Too_many_rows

SELECT INTO 返回多行

ORA-1476

Zero_divide

试图被零除

ORA-1722

Invalid_NUMBER

转换一个数字失败

ORA-6500

Storage_error

内存不够引发的内部错误

ORA-6501

Program_error

内部错误

ORA-6502

Value_error

转换或截断错误

ORA-6504

Rowtype_mismatch

宿主游标变量与 PL/SQL变量有不兼容行类型

ORA-6511

CURSOR_already_OPEN

试图打开一个已处于打开状态的游标

ORA-6530

Access_INTO_null

试图为null 对象的属性赋值

ORA-6531

Collection_is_null

试图将Exists 以外的集合( collection)方法应用于一个null pl/sql 表上或varray

ORA-6532

Subscrip_outside_limit

对嵌套或varray索引得引用超出声明范围以外

ORA-6533

Subscript_beyond_count

对嵌套或varray 索引得引用大于集合中元素的个数.


例子:

--异常处理 declare  val number;begin  val := 1/0;  exception  when Zero_divide then dbms_output.put_line('aaaa');                         dbms_output.put_line('bbb');  when others then dbms_output.put_line('ccccc');end;


自定义异常

--异常处理 declare  foo number;  Self_Def_exception exception;begin  foo := 1;  if foo=1 then     raise Self_Def_exception;      end if;exception    when Self_Def_exception then dbms_output.put_line('aaaa');    when others then dbms_output.put_line('bbb');    end;