常发生的异常有哪些, 如何使用异常?

常用预定义例外
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;

posted @ 2012-10-23 11:06  邹晟  阅读(415)  评论(0编辑  收藏  举报