常发生的异常有哪些, 如何使用异常?
常用预定义例外
CURSOR_ALREADY_OPEN -- ORA-06511 SQLCODE = -6511 游标已经打开
DUP_VAL_ON_INDEX -- ORA-00001 SQLCODE = -1 违反唯一性约束
INVALID_CURSOR -- ORA-01001 SQLCODE = -1001 非法游标操作
INVALID_NUMBER -- ORA-01722 SQLCODE = -1722 字符向数字转换失败
LOGIN_DENIED -- ORA-01017 SQLCODE = -1017
NO_DATA_FOUND -- ORA-01403 SQLCODE = +100 没有找到数据
NOT_LOGGED_ON -- ORA-01012 SQLCODE = -1012 没有连接到
数据库
PROGRAM_ERROR -- ORA-06501 SQLCODE = -6501 内部错误
STORAGE_ERROR -- ORA-06500 SQLCODE = -6500
TIMEOUT_ON_RESOURCE -- ORA-00051 SQLCODE = -51
TOO_MANY_ROWS -- ORA-01422 SQLCODE = -1422 返回多行
TRANSACTION_BACKED_OUT -- ORA-00061 SQLCODE = -61
VALUE_ERROR -- ORA-06502 SQLCODE = -6502 数值转换错误
ACCESS_INTO_NULL试图为NULL对象的属性赋值
ZERO_DIVIDE -- ORA-01476 SQLCODE = -1476 被零除
OTHERS -- 其它任何错误的处理
如何使用异常?
在oracle中有三种类型的异常。预定义的异常 非预定义的异常 用户定义的
异常 第二种非预定义的异常是与特定的oracle错误关联。并且用PRAGM
EXCEPTION_INIT(EXCEPTION_NAME,ERROR_NUMBER)关联一起的。但是到底有什么用啊?
例如:declare dup_primary_key exception; pragma
exception_init(dup_primary_key,-1); begin insert into itemfile
values('i201','washer','spares',100,50,250,12,30); exception
when dup_primary_key then dbms_output.put_line('重复项编号-主键冲突');
end
第一种的使用方法:exception
when 异常名称 then
异常处理代码;
第三种的用法:if 条件 then
raise_application_error(-20000```````-20999,提示
信息);
end if;