Oracle 10g新特性 選擇性編譯

2021-08-23 11:53:49 字數 1741 閱讀 5754

fuyuncat<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

www.hellodba.com

oracle10g中提供了乙個十分方便開發人員的新特性——選擇性編譯。即可以通過條件,只編譯pl/sql中的部分**。如果你對c++很熟悉,那你會對這個特**覺非常親切,因為它和c++中的條件巨集十分相似。在9i的時候,開發人員將自己的除錯資訊加入到程式中,往往release之後都沒有刪掉,這些資訊輕則影響可讀性,嚴重的話會影響系統效能。有了這個特性後,這個問題就可以解決了。

下面舉個簡單的例子解釋一下:

建立乙個有條件巨集的函式:

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

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

執行函式:

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

ORACLE10g新特性 全域性HASH分割槽索引

這兩天看文件時發現,oracle10g中新增了全域性分割槽索引的型別 hash分割槽。在10g以前,oracle的全域性索引分割槽方法只有一種,即範圍分割槽。sql create table t part index id number,name varchar2 30 create date da...

Oracle 10g最佳20個新特性 3

圖 8 活動會話等待 該畫面顯示會話正在等待的等待事件是 enq tx row lock contention。那麼導致此問題的 sql 語句是什麼?很簡單 畫面本身顯示了語句 8rkquk6u9fmd0 的 sql id 在紅色圓圈中 單擊該 sql id,調出如圖 9 所示的 sql 畫面。圖 ...

oracle 10g的閃回特性

1.先介紹兩個表 select from tab 檢視有那些表 select from ind 檢視有那些索引 2.試驗指令碼 create table abc id int create index abc on abc id commit insert into abc values 1 ins...