Oracle Package的参数

时间:2013-10-02 09:09:53

标签: plsql

我在PKB文件的顶部有一个带有常量值的oracle包,如下所示

create or replace
PACKAGE BODY GEOHELPER AS

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

对于一些客户,我想要用户4326和一些5638.在编译/发布时从.bat文件更改此值的最佳方法是什么?我不希望我的包有两个版本。有什么想法吗?

1 个答案:

答案 0 :(得分: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

...