PL/SQL入门:预定义异常处理
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 |
Oracle技术沙龙:【数据保护顶尖技术-MAA】首次全国首播12c MAA技术 云数据库加上MAA技术组成最豪华的技...
Oracle技术沙龙第49期:【Oracle 数据库云技术分享】Oracle技术沙龙第49期:【Oracle 数据库云技术分享】本次技术沙...
Oracle技术沙龙第48期:【Oracle 12c RAC安装】小编:今天讲什么内容呢?以后有什么用呢? 大师:今天讲的是12c...
- 我要参加技术沙龙