PL/SQL处理例外3(PL/SQL编译警告)
来源:互联网 发布:wifi突然没有网络 编辑:程序博客网 时间:2024/05/16 09:25
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 COMPILEPLSQL_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 ASx 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)ASBEGIN 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
- PL/SQL处理例外3(PL/SQL编译警告)
- PL/SQL处理例外
- pl/sql进阶---例外处理
- PL/SQL常用例外
- PL/SQL exception(例外)
- PL/SQL之例外
- PL/SQl自定义例外
- Oracle(26)pl/sql编程 例外处理
- oracle pl/sql 例外(exception) 异常
- PL/SQL例外概念和系统例外
- PL/SQL预定义例外
- PL/SQL程序之例外
- oracle pl sql 抛出例外
- PL/SQL的No_data_found例外
- PL/SQL的value_error例外
- PL/SQL的too_many_rows例外
- PL/SQL的zero_divide例外
- Oracle学习笔记(三十)——pl/sql的进阶之例外处理
- JNI技术及Android串口通信
- 01背包 NYOJ开心的小明 杭电oj开心的金明
- android的消息处理机制(图+源码分析)——Looper,Handler,Message
- CAN总线
- bzoj 2049: [Sdoi2008]Cave 洞穴勘测 (link-cut-tree)
- PL/SQL处理例外3(PL/SQL编译警告)
- nginx的RTMP协议服务器
- Spring总结
- pentaho4.8的平台搭建
- JavaScript在线调试
- dp数塔问题
- c++运算符重载总结
- C++中的delete和delete[]的区别
- webmin改密码