日期:2014-05-16  浏览次数:20371 次

Oracle学习(六)——15天Oracle入门

??????????????????????????异常处理

--异常处理分为预定义异常处理,非预定义异常处理,和自定义异常处理。

<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内已经定义好的异常 可直接用.