当前位置: 首页 > 知识库问答 >
问题:

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

胡璞瑜
2023-03-14

我试图在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;

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

Deploy[tnbdr]db2inst1.arithmetic Running db2inst1.arithmetic-Deploy for debug started。Create PL/SQL Package Specification返回SQLCODE:-104,SQLSTATE:42601。db2inst1.arithmetic:1:在“create OR REPLACE”后面发现一个意外的令牌“package”。预期的令牌可能包括:

“查看”..SqlCode=-104,SqlState=42601,Driver=4.18.60在“创建或替换”之后发现意外的令牌“Package”。预期的标记可能包括:“view”..sqlcode=-104,sqlstate=42601,driver=4.18.60 db2inst1.arithmetic-deploy for debug失败。db2inst1.arithmetic-roll back已成功完成。

我如何部署这个包,为什么它失败了?

共有1个答案

南宫浩皛
2023-03-14

数据库设置为Oracle兼容性时,Db2支持PL/SQL包的编译/创建:

db2set DB2_COMPATIBILITY_VECTOR=ORA
db2stop
db2start

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

 类似资料:
  • 问题内容: 我正在寻找与T-SQL相当的db2: 问题答案: 根据《DB2生存指南》,也可以使用两个撇号在DB2上获得单个撇号。那不是对你有用吗?

  • 问题内容: 我在下面的表A中,对于每个唯一的ID,都有三个带有某些值的代码。 我有第二个表B,其格式如下: 每个唯一ID仅一行。我想为第一个表中的每个ID填充第一个表A中的第二个表B。 对于上面的第一个表A,第二个表B应该显示为: 如何在单个SQL查询中实现此目标? 问题答案: 如果您的版本没有,您也可以使用以下命令: (在我的V6R1 DB2实例上工作,并有一个SQL Fiddle示例)。

  • DB2 RazorSQL可生成SQL用于执行,,,和等操作。 选择特定列或使用语句选择全部。 得到以下结果: 通过使用,可以在表中插入记录。如下图所示: 生成代码结果如下: 通过使用,可以更新表中的记录。 生成代码结果如下: 通过使用,可以删除表中的记录。 生成代码结果如下:

  • 它显示: 产品名称:DB2/Linuxx8664 版本:10.5.0.5

  • DB2

    DB2 Express-C 基于与 DB2 Universal Database™(UDB) Express Edition V8.2.2 产品一样的核心技术。Linux® 和 Windows® 平台(32 位和 64 位)上的 DB2 Express-C 可以从 IBM 免费 下载。IBM 在 2006 年 1 月 1 日推出了 DB2 Express-C,这是 DB2 Univ

  • 问题内容: 假设我有一个名为“ Company”的表,其中包含CompanyID关键字。还有另一个名为“ CompanyAddress”的相关表,该表具有CompanyID外键,因此可以轻松地建立联接。 该CompanyAddress表可以具有给定公司的多个地址,例如AddressType = 1或AddressType = 2 用于获取字段的联接等是微不足道的,但是我需要一个条件,在该条件下查询