PL/SQL处理例外3(PL/SQL编译警告)

1、PL/SQL警告分类

SEVERE:该种警告用于检查可能出现的不可预料结果或错误结果,例如参数的另外问题。
PERFORMANCE:该类警告用于检查可能引起的性能问题,例如在执行INSERT操作时为NUMBER列提供了VARCHAR2类型的数据。
INFORMATIONAL:该类警告用于检查子程序中的死代码。
ALL:该关键字用于检查所有警告(SEVERE,PERFORMANCE,INFORMATIONAL)。

2、控制PL/SQL警告消息

为了使得数据库可以在编译PL/SQL子程序时发出警告消息,需要设置初始化参数PLSQL_WARNINGS。初始化参数PLSQL_WARNINGS不仅可以在系统级或会话级设置,也可以在ALTER PROCEDURE命令中进行设置。
SQL> ALTER SYSTEM SET PLSQL_WARNINGS = 'ENABLE:ALL';
SQL> ALTER SESSION SET PLSQL_WARNINGS = 'ENABLE:PERFORMANCE';
SQL> ALTER PROCEDURE proc_raise_comm COMPILE
PLSQL_WARNINGS='ENABLE:PERFORMANCE';
SQL> ALTER SYSTEM SET PLSQL_WARNINGS = 'DISABLE:ALL';
SQL> ALTER SESSION SET PLSQL_warnings = 'DISABLE:SERVER',
'ENABLE:PERFORMANCE','ERROR:06002';
当激活或禁止PL/SQL编译警告时,不仅可以使用ALTER SYSTEM,ALTER SESSION和ALTER PROCEDURE命令,还可以使用PL/SQL系统包DBMS_WARNINGS。示例如下:
SQL> CALL dbms_warning.set_warning_setting_string(VALUE => 'ENABLE:ALL',scope => 'SESSION');

3、使用PL/SQL编译警告

(1)检测死代码
CREATE OR REPLACE PROCEDURE proc_deadcode AS
x NUMBER := 10;
BEGIN
  IF x = 10 THEN
    x := 20;
  ELSE
    x := 100; --死代码(永远不会执行)
  END IF;
END proc_deadcode;
为了检测该子程序是否包含死代码,必须首先激活警告检查,然后重新编译子程序,最后使用SHOW ERRORS命令显示警告错误。示例如下:
SQL> ALTER SESSION SET PLSQL_WARNINGS = 'ENABLE:INFORMATIONAL';
SQL> ALTER PROCEDURE proc_deadcode COMPILE;
SQL> SHOW ERRORS;
(2)检测引起性能问题的代码
CREATE OR REPLACE PROCEDURE proc_updatesql(NAME VARCHAR2,salary VARCHAR2)
AS
BEGIN
  UPDATE emp SET sal = salary WHERE ename = NAME;
END;
为了检测该子程序是否会引起性能问题,应首先激活警告检查,然后重新编译子程序,最后再使用SHOW ERRORS命令显示警告错误。示例如下:
SQL> ALTER SESSION SET PLSQL_WARNINGS = 'ENABLE:PERFORMANCE';
SQL> ALTER PROCEDURE PROC_UPDATESQL COMPILE;
SQL> SHOW ERRORS;
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值