Oracle10g新特性——选择性编译

文章作者 100test 发表时间 2008:03:31 12:30:01
来源 100Test.Com百考试题网


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

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

  创建一个有条件宏的函数:

1 SQL> CREATE OR REPLACE FUNCTION F_TESTDEBUG 2 RETURN NUMBER IS 3 v_count number. 4 BEGIN 5 0select count(*) into v_count from user_tables. 6 7 $IF $$my_debug $THEN 8 DBMS_OUTPUT.PUT_LINE(Tables number is: || v_count). 9 $END 10 11 return v_count. 12 END. 13 / Function created

激活debug信息(通过变量$$my_debug控制):

SQL> ALTER FUNCTION F_TESTDEBUG COMPILE PLSQL_CCFLAGS = my_debug:TRUE REUSE SETTINGS. Function altered

运行函数:
SQL> set serveroutput on 1 SQL> declare 2 v_res number. 3 begin 4 v_res := F_TESTDEBUG. 5 end. 6 / Tables number is: 22 PL/SQL procedure successfully completed

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

我们再去掉调试信息:

SQL> ALTER FUNCTION F_TESTDEBUG COMPILE PLSQL_CCFLAGS = my_debug:FALSE REUSE SETTINGS. Function altered

执行函数:

1 SQL> declare 2 v_res number. 3 begin 4 v_res := F_TESTDEBUG. 5 end. 6 / PL/SQL procedure successfully completed

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

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


相关文章


史上最全九种破解Xp登录密码方法
妙用注册表来清理系统垃圾文件
警惕底层Rootkit病毒新变种
Oracle和SQLServer:新的凯撒大帝?
Oracle10g新特性——选择性编译
Oracle11g如何赢得.NET开发人员的青睐?
Oracle数据库表与视图
临床执业医师历年试题考点纵览——卫生法规
中国药典2000版一部:通关散
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛