很早就看了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/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/197458/viewspace-1008026/