WEB开发网
开发学院数据库Oracle Oracle10g新特性——选择性编译 阅读

Oracle10g新特性——选择性编译

 2008-08-30 12:44:21 来源:WEB开发网   
核心提示:Oracle10g中提供了一个十分方便开发人员的新特性——选择性编译,即可以通过条件,Oracle10g新特性——选择性编译,只编译PL/SQL中的部分代码,如果你对C++很熟悉,当然,我们在实际release的时候就不需要用alter了(除非现场调试),那你会对这个特性感觉非常亲切,因为它和C

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 select 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了。

Tags:Oracleg 特性 选择性

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接