oracle 10g的條件編譯

jidongzheng發表於2008-07-29

很早就看了oracle10g的儲存過程支援條件編譯。但一直都無測試,今天測試下,發現要注意的地方還真不少。

以下為測試程式碼:

create or replace procedure pro_test_condistion_compile
as
begin
dbms_output.put_line('============================');
$if $$my_condition = 1 $then
dbms_output.put_line('my_condition is :1');
$else
dbms_output.put_line('my_condition is not :1');
$end
dbms_output.put_line('============================');

dbms_output.put_line('============================');
$if $$my_conditionII = 1 $then
dbms_output.put_line('$$my_conditionII is :1');
$else
dbms_output.put_line('$$my_conditionII is not :1');
$end
dbms_output.put_line('============================');


end;

alter session set PLSQL_CCFLAGS = 'my_condition:0' ;

alter procedure pro_test_condistion_compile compile;

或者:

ALTER PROCEDURE pro_test_condistion_compile COMPILE
PLSQL_CCFLAGS = 'current_user_type:0'
REUSE SETTINGS
/

alter procedure pro_test_condistion_compile compile PLSQL_CCFLAGS = 'my_condition:1 ,my_conditionII:1 ' ;

需要注意的地方:

1。它的寫法,除了新增$,$$外,還沒有;。這個要注意。

2。指定編譯引數後,只對編譯有影響,一旦編譯完成了,儲存過程的內容也就確定了。

3。如果需要重新指定編譯條件值,就得重新編譯。

[@more@]ora

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/197458/viewspace-1008026/,如需轉載,請註明出處,否則將追究法律責任。

相關文章