2013-10-02 27 views
3

我有一个Oracle包具有恒定值的PKB文件的顶部如下参数Oracle包

create or replace 
PACKAGE BODY GEOHELPER AS 

g_SRID pls_integer := 4326; 
... 
... 

对于一些客户我想用户4326和一些5638.什么是最好的方法在.bat文件的编译/释放时更改此值?我不想拥有两个版本的软件包。有任何想法吗?

+0

看一看条件编译:http://www.oracle.com/technetwork/issue-archive/2006/06-jul/o46plsql-096385.html HTTP:// WWW。 oracle.com/technetwork/database/features/plsql/overview/plsql-conditio nal-compilation-133587.pdf –

回答

3

正如评论所说,条件编译是,如果你使用的是至少的Oracle 10g R2的选项。

在你的脚本用于包重新编译,请使用以下ALTER设置特定条件编译标志,你可以在以后使用,包在编译期间:

ALTER SESSION SET plsql_ccflags='variable_name:1'; 

然后,在包身上,使用条件编译IF语句:

create or replace 
PACKAGE BODY GEOHELPER AS 

$IF $$variable_name = 1 
$THEN 
    g_SRID pls_integer := 4326; 
$ELSIF $$variable_name = 2 
$THEN 
    g_SRID pls_integer := 5232; 
$ELSE 
    g_SRID pls_integer := 0; 
$END 

... 
+0

谢谢。适合我... – user2837961