Oracle自定义异常收集(四)

上一篇 / 下一篇  2009-12-26 14:19:38 / 个人分类:Oracle相关

PL/SQL编译警告在Oracle 10g之前,编写PL/SQL子程序时,只要子程序符合SQL和PL/SQL的语法及主义规则,Oracle就会成功地编译子程序. 如下 (DEAD CODE):

      CREATE OR REPLACE PROCEDURE dead_code
      AS
         x number := 10; 
      BEGIN
      IF x=10 THEN
              x=20;
      ELSE x:=100; --死代码
      END IF;
      END dead_code;

如例,ELSE子句永远不会执行,应该避免出现类似的死代码.Oracle 10g开始, 在编写PL/SQL子程序之前开发人员可以激活警告检查.

1.PL/SQL警告分类 SEVERE: 用于检查可能出现的不可预料结果或错误结果,例如参数的别名问题. PERFORMANCE: 用于检查可能引起性能问题,如在INSERT操作是为NUMBER列提供了VARCHAR2类型数据. INFORMATIONAL: 用于检查程序中的死代码. ALL: 用于检查所有警告.

2.控制PL/SQL警告消息为了使得数据库可以在编译PL/SQL子程序时发出警告消息,需要设置寝化参数PLSQL_WARNINGS. 不仅可以在系统级或会话级设置,也可以在ALTER PROCEDURE命令是进行设置. 既可以激活或禁止所有警告类型,也可以激活或禁止特定消息号.如:

SQL> ALTER SYSTEM SET PLSQL_WARNINGS='ENABLE:ALL';

SQL> ALTER SESSION SET PLSQL_WARNINGS='ENABLE:PERFORMANCE';

SQL> ALTER PROCEDURE hello COMPILE;
2> PLSQL_WARNINGS='ENABLE:PERFORMANCE';

SQL> ALTER SESSION SET PLSQL_WARNINGS='DISABLE:ALL';

SQL> ALTER SESSION SET PLSQL_WARNINGS='ENABLE:SEVERE', 2> 'DISABLE:PERFORMANCE','ERROR:06002';

激活警告检查后,编译子程序时用SHOW ERRORS命令显示警告错误.


TAG:

 

评分:0

我来说两句

Open Toolbar