3

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

create or replace
PACKAGE BODY GEOHELPER AS

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

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

4

1 回答 1

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

...
于 2013-10-02T09:42:51.467 回答