熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

Oracle10g新特性—選擇性編譯

2013-11-13 22:22:49  來源: Oracle 

  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了


From:http://tw.wingwit.com/Article/program/Oracle/201311/18938.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.