Oracle PL/SQL之EXCEPTION -- WHEN OTHERS THEN

來源:互聯網
上載者:User

在處理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>   

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.