Db2:如何在 db2 中部署 Oracle PL/SQL 包?

Posted

技术标签:

【中文标题】Db2:如何在 db2 中部署 Oracle PL/SQL 包?【英文标题】:Db2: How to deploy an Oracle PL/SQL package in db2? 【发布时间】:2017-08-16 12:42:40 【问题描述】:

我尝试在 Db2 中创建 Oracle PL/SQL 包,但遇到了错误。

   CREATE OR REPLACE PACKAGE ARITHMETIC AS
       function add (
          first number,
          second number)
       return number;
    END ARITHMETIC;


    CREATE OR REPLACE PACKAGE BODY ARITHMETIC AS
      function add(
          first number,
          second number)
       return number AS

      BEGIN
       return first + second;
      END add;
    END ARITHMETIC;

当我运行上面的代码时,它会导致以下错误:

部署 [tnbdr]DB2INST1.ARITHMETIC 正在运行 DB2INST1.ARITHMETIC - 已开始部署以进行调试。 创建 PL/SQL 包规范返回 SQLCODE:-104,SQLSTATE:42601。 DB2INST1.ARITHMETIC: 1: 发现意外的标记“PACKAGE” 在“创建或替换”之后。预期的令牌可能包括:

“查看”.. SQLCODE=-104, SQLSTATE=42601, DRIVER=4.18.60 在“CREATE OR REPLACE”之后发现了一个意外的标记“PACKAGE”。预期的标记可能包括:“VIEW”.. SQLCODE=-104, SQLSTATE=42601,驱动程序=4.18.60 DB2INST1.ARITHMETIC - 部署调试失败。 DB2INST1.ARITHMETIC - 回滚成功完成。

如何部署包,为什么会失败?

【问题讨论】:

【参考方案1】:

当database is set up for Oracle compatibility:

时,DB2 支持编译/创建 PL/SQL 包
db2set DB2_COMPATIBILITY_VECTOR=ORA
db2stop
db2start

DB2_COMPATIBILITY_VECTOR 中的第 12 位启用 PL/SQL 编译。

【讨论】:

以上是关于Db2:如何在 db2 中部署 Oracle PL/SQL 包?的主要内容,如果未能解决你的问题,请参考以下文章

在 DB2 PL/SQL 匿名块中声明局部变量和声明继续处理程序会导致错误?

DB2 和 PL/1:通过创建对适当游标的引用来避免冗余,使用它

db2如何实现oracle中connect by的效果

IF SET帮助Oracle到DB2

虚拟机Linux上部署DB2pureScale过程

如何将DB2数据库转换成Oracle数据库,这一篇告诉你