Oracle入门知识:PL/SQL的预定义异常
最新学讯:近期OCP认证正在报名中,因考试人员较多请尽快报名获取最近考试时间,报名费用请联系在线老师,甲骨文官方认证,报名从速!
我要咨询Oracle入门知识:PL/SQL的预定义异常,在程序运行时出现的错误,称为异常。发生异常后,语句将停止执行,PL/SQL引擎立即将控制权转到PL/SQL块的异常处理部分。异常处理机制简化了代码中的错误检测。PL/SQL中任何异常出现时,每一个异常都对应一个异常码和异常信息。比如:
图1 PL/SQL中的异常
·预定义异常
为了Oracle开发和维护的方便,在Oracle异常中,为常见的异常码定义了对应的异常名称,称为预定义异常,常见的预定义异常有:
异常名称 |
异常码 |
描述 |
DUP_VAL_ON_INDEX |
ORA-00001 |
试图向唯一索引列插入重复值 |
INVALID_CURSOR |
ORA-01001 |
试图进行非法游标操作。 |
INVALID_NUMBER |
ORA-01722 |
试图将字符串转换为数字 |
NO_DATA_FOUND |
ORA-01403 |
SELECT INTO语句中没有返回任何记录。 |
TOO_MANY_ROWS |
ORA-01422 |
SELECT INTO语句中返回多于1条记录。 |
ZERO_DIVIDE |
ORA-01476 |
试图用0作为除数。 |
CURSOR_ALREADY_OPEN |
ORA-06511 |
试图打开一个已经打开的游标 |
表6 PL/SQL中预定义异常
PL/SQL中用EXCEPTION关键字开始异常处理。具体语法是:
语法格式:异常处理
BEGIN --可执行部分 EXCEPTION -- 异常处理开始 WHEN 异常名1 THEN --对应异常处理 WHEN 异常名2 THEN --对应异常处理 …… WHEN OTHERS THEN --其他异常处理 END; |
语法解析:
异常发生时,进入异常处理部分,具体的异常与若干个WHEN子句中指明的异常名匹配,匹配成功就进入对应的异常处理部分,如果对应不成功,则进入OTHERS进行处理。
案例10 :异常处理
代码演示:异常处理
SQL> DECLARE 2 newSal emp.sal % TYPE; 3 BEGIN 4 SELECT sal INTO newSal FROM emp; 5 EXCEPTION 6 WHEN TOO_MANY_ROWS THEN 7 dbms_output.put_line('返回的记录太多了'); 8 WHEN OTHERS THEN 9 dbms_output.put_line('未知异常'); 10 END; 11 / 返回的记录太多了 PL/SQL procedure successfully completed |