PL/SQL每日一题:异常处理--WHEN子句
来源:互联网 发布:淘宝店铺第三层级 编辑:程序博客网 时间:2024/06/08 22:21
题目:
捕获除数为零的错误("ORA-01476: divisor is equal to zero")并且在这种情况下显示 "Bad division"
所有的其他异常都必须原封不动地传播到调用块
换句话说,如果我加入下列异常处理部分然后执行如下代码块:
BEGIN plch_proc (0); plch_proc (-1);EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.put_line ('All handled');END;/
随后我应该在屏幕上看到如下输出:
Bad division
All handled
(A)EXCEPTION WHEN 'ORA-01476' THEN DBMS_OUTPUT.put_line ('Bad division');(B)EXCEPTION WHEN ZERO_DIVIDE THEN DBMS_OUTPUT.put_line ('Bad division');(C)EXCEPTION WHEN OTHERS THEN IF SQLCODE = -01476 THEN DBMS_OUTPUT.put_line ('Bad division'); ELSE RAISE; END IF;(D)EXCEPTION WHEN OTHERS THEN IF SQLCODE = 1476 THEN DBMS_OUTPUT.put_line ('Bad division'); END IF;(E)EXCEPTION WHEN OTHERS THEN IF SQLCODE = -1476 THEN DBMS_OUTPUT.put_line ('Bad division'); END IF;
答案:
选择:BC
A: 语法错误,WHEN后面必须跟着已定义好的异常,可以是系统定义或自定义
B: ZERO_DIVIDE是系统定义异常
C: 通过WHEN OTHERS捕获了所有异常并对其中一种错误代码进行处理,其他的继续抛出,所以上层还能捕获到其他异常
D: 错误代码写得不对
SQLCODE一般返回负数,处理这几种情况:
① 没有异常(返回0)
② 用户自定义异常而且没有用EXCEPTION_INIT和一个错误代码关联
此时返回1用户自定义异常而且没有用EXCEPTION_INIT和一个错误代码关联(此时返回1)
③ NO_DATA_FOUND(SQLCODE返回100)
E: 和C的区别是没有用RAISE继续抛出,所以上层无法捕获
- PL/SQL每日一题:异常处理--WHEN子句
- PL/SQL每日一题:输出负数
- PL/SQL 异常处理
- PL/SQL异常处理
- PL/SQL异常处理
- PL/SQL异常处理
- PL/SQL 异常处理
- pl/sql异常处理
- PL/SQL 异常处理
- PL/SQL异常处理
- PL SQL异常处理
- PL/SQL 异常处理
- pl/sql异常处理
- PL/SQL异常处理
- PL/SQL异常处理
- PL/SQL异常处理
- PL/SQL--异常处理
- PL/SQL 异常处理
- 找出无序数组中最小的前k个数
- 100条估计信号完整性效应的经验法则
- 函数的设计
- ubuntu开启SSH服务
- 开源中国iOS客户端学习——(六)网络连接检测
- PL/SQL每日一题:异常处理--WHEN子句
- DevExpress下更改gridcontrol控件cardview的cardCaption标题
- 2012
- SQLite数据库
- android gridview左右滑动(二)
- 第三十七节 java学习——color类
- 全局变量与局部变量定义及存储小结
- 2013全国各地火车票起售时间(放票时间最新公布)
- 设置一个DIV或者table的高度自适应屏幕的高度