条件编译PL / SQL

时间:2015-12-17 15:23:52

标签: oracle plsql plsqldeveloper

有人可以在PL / SQL中解释条件编译的概念吗?我已经研究过但不太明白使用它的原因以及它实际上做了什么。一个例子就是很棒!

另外,我想了解更多有关条件编译控制令牌的信息。 PL / SQL中的标记是什么?

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:4)

最好的资源是Oracle自己的文档(11g12c

但是,条件编译的概念是它可以用于在编译时基于某些静态条件以不同方式编译代码。

例如,您最初可能会在一个Oracle版本中编写一段代码,例如Oracle 11g。开发工作一直在进行,也许您在Oracle 12c中发现可以更好地执行相同操作的新功能。您可以使用条件编译来编译11g实例中的原始代码,但只编译12c和更新的数据库的新12c优化代码。例如:

begin
  $IF DBMS_DB_VERSION.VERSION < 12 $THEN
    -- Do your old school stuff here
  $ELSE
    -- Do the new stuff here
  $END
end;

DBMS_DB_VERSION包中包含静态常量,例如上面使用的VERSION常量。您可以使用条件编译布尔表达式中任何包中定义的任何常量PLS_INTEGERBOOLEAN值。这意味着,即使在包规范中包含常量修订号或常量布尔标志,您甚至可以将条件编译基于您自己代码的特定版本。例如:

begin
  $IF MY_PACKAGE.REVISION < 2 $THEN
    -- Use the legacy code here
  $ELSIF MY_PACKAGE.REVISION < 4 $THEN
    -- Use the newer code here
  $ELSE
    -- Use the latest code here
  $END
end;