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: