Welcome 微信登录

首页 / 数据库 / MySQL / Oracle PL/SQL之EXCEPTION -- WHEN OTHERS THEN

在处理EXCEPTION时应特别注意WHEN OTHERS THEN的使用,因为WHEN OTHERS THEN会吃掉所有的EXCEPTION。如果在WHEN OTHERS THEN后不抛出任何信息,即:WHEN OTHERS THEN NULL; 这可能会极大地增加以后程序排错的难度,因为即使出错了,也没有任何提示。所以我们需要特别留意WHEN OTHERS THEN,除了一个一个的手工查找外,还可以采用如下命令以便在编译时就进行检查:
  1. ALTER SESSION SET plsql_warnings = "enable:all";  
测试样例:
  1. Connected to Oracle Database 11g Enterprise Edition Release 11.1.0.7.0   
  2. Connected as xxpo  
  3.   
  4. SQL> set serveroutput on  
  5.   
  6. SQL> ALTER SESSION SET plsql_warnings = "enable:all";  
  7.   
  8. Session altered  
  9.   
  10. SQL> @"D:/test/xxpotest.plb";  
  11.    
  12. Package body created  
  13.   
  14. SQL> sho err;  
  15. Errors for PACKAGE BODY XXPO.XXPO_TEST_PKG:  
  16.    
  17. LINE/COL ERROR  
  18. -------- --------------------------------------------------------------------------------------------------  
  19. 88/13    PLW-05004: identifier LOG is also declared in STANDARD or is a SQL builtin  
  20. 285/5    PLW-07203: parameter "X_MESSAGE" may benefit from use of the NOCOPY compiler hint  
  21. 504/5    PLW-07203: parameter "X_MESSAGE" may benefit from use of the NOCOPY compiler hint  
  22. 569/5    PLW-07203: parameter "X_MESSAGE" may benefit from use of the NOCOPY compiler hint  
  23. 1008/14  PLW-07204: conversion away from column type may result in sub-optimal query plan  
  24. 1027/14  PLW-07204: conversion away from column type may result in sub-optimal query plan  
  25. 2027/12  PLW-07204: conversion away from column type may result in sub-optimal query plan  
  26. 1667/14  PLW-06009: procedure "SET_STG_TBL" OTHERS handler does not end in RAISE or RAISE_APPLICATION_ERROR  
  27. 1716/14  PLW-06009: procedure "SET_STG_TBL" OTHERS handler does not end in RAISE or RAISE_APPLICATION_ERROR  
  28. 1773/14  PLW-06009: procedure "SET_STG_TBL" OTHERS handler does not end in RAISE or RAISE_APPLICATION_ERROR  
  29. 1755/14  PLW-06009: procedure "SET_STG_TBL" OTHERS handler does not end in RAISE or RAISE_APPLICATION_ERROR  
  30. 1737/14  PLW-06009: procedure "SET_STG_TBL" OTHERS handler does not end in RAISE or RAISE_APPLICATION_ERROR  
  31. 1789/10  PLW-06009: procedure "SET_STG_TBL" OTHERS handler does not end in RAISE or RAISE_APPLICATION_ERROR  
  32. 2046/10  PLW-06009: procedure "MAIN" OTHERS handler does not end in RAISE or RAISE_APPLICATION_ERROR  
  33. 1910/11  PLW-06002: Unreachable code  
  34.    
  35. SQL>   
Oracle PL/SQL之EXCEPTIONOracle PL/SQL之VARCHAR2 QUALIFIER相关资讯      Oracle教程 
  • Oracle中纯数字的varchar2类型和  (07/29/2015 07:20:43)
  • Oracle教程:Oracle中查看DBLink密  (07/29/2015 07:16:55)
  • [Oracle] SQL*Loader 详细使用教程  (08/11/2013 21:30:36)
  • Oracle教程:Oracle中kill死锁进程  (07/29/2015 07:18:28)
  • Oracle教程:ORA-25153 临时表空间  (07/29/2015 07:13:37)
  • Oracle教程之管理安全和资源  (04/08/2013 11:39:32)
本文评论 查看全部评论 (2)
表情: 姓名: 字数


评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款