数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

Oracle10g新特性—选择性编译


发布日期:2023年03月31日
 
Oracle10g新特性—选择性编译

Oracleg中提供了一个十分方便开发人员的新特性——选择性编译即可以通过条件只编译PL/SQL中的部分代码如果你对C++很熟悉那你会对这个特性感觉非常亲切因为它和C++中的条件宏十分相似i的时候开发人员将自己的调试信息加入到程序中往往release之后都没有删掉这些信息轻则影响可读性严重的话会影响系统性能有了这个特性后这个问题就可以解决了

下面举个简单的例子解释一下

创建一个有条件宏的函数 SQL> CREATE OR REPLACE FUNCTION F_TESTDEBUG

RETURN NUMBER IS

v_count number;

BEGIN

select count(*) into v_count from user_tables;

$IF $$my_debug $THEN

DBMS_OUTPUTPUT_LINE(Tables number is: || v_count);

$END

return v_count;

END;

/

Function created

激活debug信息(通过变量$$my_debug控制) SQL> ALTER FUNCTION F_TESTDEBUG COMPILE PLSQL_CCFLAGS = my_debug:TRUE REUSE SETTINGS;

Function altered

运行函数 SQL> set serveroutput on

SQL> declare

v_res number;

begin

v_res := F_TESTDEBUG;

end;

/

Tables number is:

PL/SQL procedure successfully completed

这时候可以看到debug信息被打印出来了

我们再去掉调试信息 SQL> ALTER FUNCTION F_TESTDEBUG COMPILE PLSQL_CCFLAGS = my_debug:FALSE REUSE SETTINGS;

Function altered

执行函数 SQL> declare

v_res number;

begin

v_res := F_TESTDEBUG;

end;

/

PL/SQL procedure successfully completed

我们可以看到调试信息没有了

当然我们在实际release的时候就不需要用alter了(除非现场调试)可以在release脚本的头部定义好my_debug变量就OK了

上一篇:oracle中一个简单的函数

下一篇:Oracle为数据整合功能而收购GoldenGate