日期:2014-05-16 浏览次数:20371 次
??????????????????????????异常处理
--异常处理分为预定义异常处理,非预定义异常处理,和自定义异常处理。
<1>.预定义异常处理
?常见的Oracle已预定好的异常有:
?异常名称?????????????????????ORACLE错误???????????? 说明
???CURSOR_ALREADY_OPEN??????????? ORA-6511????????? 试图打开一个已打开的光标
?? DUP_VAL_ON_INDEX???????????????ORA-0001????????? 试图破坏一个唯一性限制
?? INVALID_CURSOR?????????????????ORA-1001????????? 试图使用一个无效的光标
?? INVALID_NUMBER???????????????? ORA-1722????????? 试图对非数字值进行数字操作
?? LOGIN_DENIED???????????????????ORA-1017????????? 无效的用户名或者口令
?? NO_DATA_FOUND??????????????????ORA-1403????????? 查询未找到数据
?? NOT_LOGGED_ON??????????????????ORA-1012????????? 还未连接就试图数据库操作
?? PROGRAM_ERROR??????????????????ORA-6501????????? 内部错误
?? ROWTYPE_MISMATCH???????????????ORA-6504????????? 主变量和光标的类型不兼容
?? STORAGE_ERROR??????????????????ORA-6500????????? 内部错误
?? TIMEOUT_ON_RESOURCE?????????? ?ORA-0051????????? 发生超时
?? TOO_MANY_ROWS??????????????????ORA-1422????????? SELECT INTD命令返回的多行
?? TRANSACTION_BACKED_OUT?????????ORA-006?????????? 由于死锁提交被退回
?? VALUE_ERROR????????????????????ORA-6502????????? 转换或者裁剪错误
?? ZERO_DIVIDE????????????????????ORA-1476????????? 试图被零除
?--eg:
?? declare
?? va number;
?? begin
?? va:=6;
?? dbms_output.put_line(va/0);
?? exception
?? when zero_divide then? --zero_divide 是oracle内已经定义好的异常 可直接用.