2011-10-21 自定义异常的捕获
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,http://www.itpub.net/thread-1499223-7-1.html70楼下列的哪些程序块在执行之后会显示:"Trapped!"注意:当你试图把字符串 "13-DEC-2004 6
千家信息网最后更新 2026年11月01日2011-10-21 自定义异常的捕获
http://www.itpub.net/thread-1499223-7-1.html
70楼
下列的哪些程序块在执行之后会显示:"Trapped!"
注意:当你试图把字符串 "13-DEC-2004 6:56 PM" 使用掩码 "DD-MON-YYYY HH:MI:SS" 转换成日期型时,Oracle 会抛出 ORA-01858 错误。
(A)
DECLARE e1 EXCEPTION; PRAGMA EXCEPTION_INIT (e1, -1858);BEGIN DBMS_OUTPUT.put_line ( TO_DATE ('13-DEC-2004 6:56 PM' , 'DD-MON-YYYY HH:MI:SS'));EXCEPTION WHEN e1 THEN DBMS_OUTPUT.put_line ('Trapped!');END;/SQL> DECLARE 2 e1 EXCEPTION; 3 PRAGMA EXCEPTION_INIT (e1, -1858); 4 BEGIN 5 DBMS_OUTPUT.put_line ( 6 TO_DATE ('13-DEC-2004 6:56 PM' 7 , 'DD-MON-YYYY HH:MI:SS')); 8 EXCEPTION 9 WHEN e1 10 THEN 11 DBMS_OUTPUT.put_line ('Trapped!'); 12 END; 13 /DECLARE e1 EXCEPTION; PRAGMA EXCEPTION_INIT (e1, -1858);BEGIN DBMS_OUTPUT.put_line ( TO_DATE ('13-DEC-2004 6:56 PM' , 'DD-MON-YYYY HH:MI:SS'));EXCEPTION WHEN e1 THEN DBMS_OUTPUT.put_line ('Trapped!');END;ORA-01843: 无效的月份ORA-06512: 在 line 5SQL>(B)
DECLARE e1 EXCEPTION; PRAGMA EXCEPTION_INIT (e1, -1858);BEGIN DECLARE e2 EXCEPTION; PRAGMA EXCEPTION_INIT (e2, -1858); BEGIN DBMS_OUTPUT.put_line ( TO_DATE ('13-DEC-2004 6:56 PM' , 'DD-MON-YYYY HH:MI:SS')); END;EXCEPTION WHEN e1 THEN DBMS_OUTPUT.put_line ('Trapped!');END;/SQL> DECLARE 2 e1 EXCEPTION; 3 PRAGMA EXCEPTION_INIT (e1, -1858); 4 BEGIN 5 DECLARE 6 e2 EXCEPTION; 7 PRAGMA EXCEPTION_INIT (e2, -1858); 8 BEGIN 9 DBMS_OUTPUT.put_line ( 10 TO_DATE ('13-DEC-2004 6:56 PM' 11 , 'DD-MON-YYYY HH:MI:SS')); 12 END; 13 EXCEPTION 14 WHEN e1 15 THEN 16 DBMS_OUTPUT.put_line ('Trapped!'); 17 END; 18 /DECLARE e1 EXCEPTION; PRAGMA EXCEPTION_INIT (e1, -1858);BEGIN DECLARE e2 EXCEPTION; PRAGMA EXCEPTION_INIT (e2, -1858); BEGIN DBMS_OUTPUT.put_line ( TO_DATE ('13-DEC-2004 6:56 PM' , 'DD-MON-YYYY HH:MI:SS')); END;EXCEPTION WHEN e1 THEN DBMS_OUTPUT.put_line ('Trapped!');END;ORA-01843: 无效的月份ORA-06512: 在 line 9SQL>(C)
DECLARE e1 EXCEPTION; PRAGMA EXCEPTION_INIT (e1, -1858);BEGIN DECLARE e2 EXCEPTION; PRAGMA EXCEPTION_INIT (e2, -1858); BEGIN DBMS_OUTPUT.put_line ( TO_DATE ('13-DEC-2004 6:56 PM' , 'DD-MON-YYYY HH:MI:SS')); END;EXCEPTION WHEN e2 THEN DBMS_OUTPUT.put_line ('Trapped!');END;/SQL> DECLARE 2 e1 EXCEPTION; 3 PRAGMA EXCEPTION_INIT (e1, -1858); 4 BEGIN 5 DECLARE 6 e2 EXCEPTION; 7 PRAGMA EXCEPTION_INIT (e2, -1858); 8 BEGIN 9 DBMS_OUTPUT.put_line ( 10 TO_DATE ('13-DEC-2004 6:56 PM' 11 , 'DD-MON-YYYY HH:MI:SS')); 12 END; 13 EXCEPTION 14 WHEN e2 15 THEN 16 DBMS_OUTPUT.put_line ('Trapped!'); 17 END; 18 /DECLARE e1 EXCEPTION; PRAGMA EXCEPTION_INIT (e1, -1858);BEGIN DECLARE e2 EXCEPTION; PRAGMA EXCEPTION_INIT (e2, -1858); BEGIN DBMS_OUTPUT.put_line ( TO_DATE ('13-DEC-2004 6:56 PM' , 'DD-MON-YYYY HH:MI:SS')); END;EXCEPTION WHEN e2 THEN DBMS_OUTPUT.put_line ('Trapped!');END;ORA-06550: 第 14 行, 第 9 列: PLS-00201: 必须声明标识符 'E2'ORA-06550: 第 0 行, 第 0 列: PL/SQL: Compilation unit analysis terminatedSQL>(D)
DECLARE e1 EXCEPTION;BEGIN DECLARE PRAGMA EXCEPTION_INIT (e1, -1858); BEGIN DBMS_OUTPUT.put_line ( TO_DATE ('13-DEC-2004 6:56 PM' , 'DD-MON-YYYY HH:MI:SS')); END;EXCEPTION WHEN e1 THEN DBMS_OUTPUT.put_line ('Trapped!');END;/SQL> DECLARE 2 e1 EXCEPTION; 3 BEGIN 4 DECLARE 5 PRAGMA EXCEPTION_INIT (e1, -1858); 6 BEGIN 7 DBMS_OUTPUT.put_line ( 8 TO_DATE ('13-DEC-2004 6:56 PM' 9 , 'DD-MON-YYYY HH:MI:SS')); 10 END; 11 EXCEPTION 12 WHEN e1 13 THEN 14 DBMS_OUTPUT.put_line ('Trapped!'); 15 END; 16 /DECLARE e1 EXCEPTION;BEGIN DECLARE PRAGMA EXCEPTION_INIT (e1, -1858); BEGIN DBMS_OUTPUT.put_line ( TO_DATE ('13-DEC-2004 6:56 PM' , 'DD-MON-YYYY HH:MI:SS')); END;EXCEPTION WHEN e1 THEN DBMS_OUTPUT.put_line ('Trapped!');END;ORA-06550: 第 2 行, 第 4 列: PLS-00700: 'E1' 的 PRAGMA EXCEPTION_INIT 必须在同一个声明部分中的异常错误声明之后ORA-06550: 第 5 行, 第 7 列: PL/SQL: Item ignoredSQL>结果有出入,设置语言为英文后重跑
SQL> alter session set nls_language='american';Session alteredSQL> SQL> DECLARE 2 e1 EXCEPTION; 3 PRAGMA EXCEPTION_INIT (e1, -1858); 4 BEGIN 5 DBMS_OUTPUT.put_line ( 6 TO_DATE ('13-DEC-2004 6:56 PM' 7 , 'DD-MON-YYYY HH:MI:SS')); 8 EXCEPTION 9 WHEN e1 10 THEN 11 DBMS_OUTPUT.put_line ('Trapped!'); 12 END; 13 /Trapped!PL/SQL procedure successfully completedSQL>SQL> alter session set nls_language='american';Session alteredSQL> SQL> SQL> DECLARE 2 e1 EXCEPTION; 3 PRAGMA EXCEPTION_INIT (e1, -1858); 4 BEGIN 5 DECLARE 6 e2 EXCEPTION; 7 PRAGMA EXCEPTION_INIT (e2, -1858); 8 BEGIN 9 DBMS_OUTPUT.put_line ( 10 TO_DATE ('13-DEC-2004 6:56 PM' 11 , 'DD-MON-YYYY HH:MI:SS')); 12 END; 13 EXCEPTION 14 WHEN e1 15 THEN 16 DBMS_OUTPUT.put_line ('Trapped!'); 17 END; 18 /Trapped!PL/SQL procedure successfully completedSQL>SQL> alter session set nls_language='american';Session alteredSQL> SQL> SQL> DECLARE 2 e1 EXCEPTION; 3 PRAGMA EXCEPTION_INIT (e1, -1858); 4 BEGIN 5 DECLARE 6 e2 EXCEPTION; 7 PRAGMA EXCEPTION_INIT (e2, -1858); 8 BEGIN 9 DBMS_OUTPUT.put_line ( 10 TO_DATE ('13-DEC-2004 6:56 PM' 11 , 'DD-MON-YYYY HH:MI:SS')); 12 END; 13 EXCEPTION 14 WHEN e2 15 THEN 16 DBMS_OUTPUT.put_line ('Trapped!'); 17 END; 18 /DECLARE e1 EXCEPTION; PRAGMA EXCEPTION_INIT (e1, -1858);BEGIN DECLARE e2 EXCEPTION; PRAGMA EXCEPTION_INIT (e2, -1858); BEGIN DBMS_OUTPUT.put_line ( TO_DATE ('13-DEC-2004 6:56 PM' , 'DD-MON-YYYY HH:MI:SS')); END;EXCEPTION WHEN e2 THEN DBMS_OUTPUT.put_line ('Trapped!');END;ORA-06550: line 14, column 9:PLS-00201: identifier 'E2' must be declaredORA-06550: line 0, column 0:PL/SQL: Compilation unit analysis terminatedSQL>SQL> alter session set nls_language='american';Session alteredSQL> SQL> SQL> DECLARE 2 e1 EXCEPTION; 3 BEGIN 4 DECLARE 5 PRAGMA EXCEPTION_INIT (e1, -1858); 6 BEGIN 7 DBMS_OUTPUT.put_line ( 8 TO_DATE ('13-DEC-2004 6:56 PM' 9 , 'DD-MON-YYYY HH:MI:SS')); 10 END; 11 EXCEPTION 12 WHEN e1 13 THEN 14 DBMS_OUTPUT.put_line ('Trapped!'); 15 END; 16 /DECLARE e1 EXCEPTION;BEGIN DECLARE PRAGMA EXCEPTION_INIT (e1, -1858); BEGIN DBMS_OUTPUT.put_line ( TO_DATE ('13-DEC-2004 6:56 PM' , 'DD-MON-YYYY HH:MI:SS')); END;EXCEPTION WHEN e1 THEN DBMS_OUTPUT.put_line ('Trapped!');END;ORA-06550: line 2, column 4:PLS-00700: PRAGMA EXCEPTION_INIT of E1 must follow declaration of its exception in the same declarative partORA-06550: line 5, column 7:PL/SQL: Item ignoredSQL>答案AB(设置语言为英文,则答案AB;如语言为中文,答案均不正确)
答案说明74楼
A: 正确捕获-1858异常B: 内层也定义了-1858但是没有捕获,所以外层仍然能够捕获到C: 内层的定义在外层是不可见的,会报PLS-00201: identifier 'E2' must be declaredD: PRAGMA EXCEPTION_INIT必须和EXCEPTION定义在同一层DECLARE中: PLS-00700: PRAGMA EXCEPTION_INIT of E1 must follow declaration of its exception in the same declarative part
答案
语言
内层
月份
错误
英文
外层
字符
字符串
日期
标识
标识符
程序
结果
部分
中文
会报
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技资迅
科技与互联网发展
互联网科技论文
上海万想互联网科技
互联网高科技股票
华中科技有哪些互联网大佬
常德市电业局互联网科技部
港股科技和互联网
青岛科技大学互联网大赛研究生
杭州壁岐互联网科技有限公司
哈尔滨屹滨互联网科技有限公司
互联网科技和法律行业
互联网科技创新的路径
区块链结合互联网科技
上海科技产业互联网平台
互联网硬科技公司
抖集互联网科技技术咨询
互联网金融金融科技
互联网科技快速发展优美句子
互联网 科技节活动 微视频大赛
科技互联网
互联网巨头科技公司
互联网络科技有限公司
碳银互联网科技
互联网科技汛
互联网 科技服务平台
海南科技产业互联网平台
隆华科技工业互联网
荆州市昕露互联网络科技有限公司
互联网相关科技技术