【问题标题】:translate from oracle to db2从 oracle 转换为 db2
【发布时间】:2019-12-17 21:50:37
【问题描述】:

如果时间允许,有人可以告诉我需要更改什么语法以适应从 oracle 到 db2 的要求吗?我希望使用 db2 命令行提示符 DB2 客户端版本 10.5.3。如果您需要更多信息,请告诉我。我将 VARCHAR2 更改为 VARCHAR 并将 NUMBER(3) 更改为 INT 以及 NUMBER(10 更改为 INT。非常感谢。Jean T.

DECLARE
   v_count   PLS_INTEGER := 0;

   TYPE inv_rt IS RECORD (upc         VARCHAR(20),
                          store       INT,
                          inv_avail   INT
                         );

   TYPE inv_tt IS TABLE OF inv_rt;
   inv_arr          inv_tt;


   CURSOR cur_data (in_date  DATE)
   IS
      SELECT i.upc, i.storenumber, i.inv_avail - SUM(t.unitvolume) AS inv_avail 
        FROM zz_tran      t,
             zz_start_inv i
       WHERE t.weekenddate <= in_date
         AND t.upc = i.upc
         AND t.storenumber = i.storenumber
       GROUP BY i.upc, i.storenumber, i.inv_avail;

BEGIN

   inv_arr := inv_tt();

   FOR d IN (SELECT DISTINCT weekenddate 
               FROM zz_tran 
              ORDER BY weekenddate
            )
   LOOP

      inv_arr := inv_tt();

      OPEN  cur_data (d.weekenddate);
      FETCH cur_data BULK COLLECT INTO inv_arr;
      CLOSE cur_data;

      FORALL i IN inv_arr.FIRST .. inv_arr.LAST
         UPDATE zz_tran
            SET inv_avail = inv_arr(i).inv_avail
          WHERE weekenddate = d.weekenddate
            AND upc = inv_arr(i).upc
            AND storenumber = inv_arr(i).store;

      COMMIT;
   END LOOP;
END;
/

【问题讨论】:

  • 我认为您需要一个公用表表达式,该表达式可以联合起来。我只能勉强输入一个来解析单词,所以我不会有太多帮助。但也许这有助于其他人回答。
  • NUMBER(10) 不等于 INT。 INT 的最大值是 2,147,483,647,而 NUMBER(10) 的最大值是 9,999,999,999。您可能应该使用 DECIMAL(10)。

标签: oracle db2


【解决方案1】:

如果从 Oracle 转换为 Db2,您可以在 Oracle 兼容模式下创建 Db2 数据库。这将允许 Db2 识别例如VARCHAR2 原生。

https://www.ibm.com/support/knowledgecenter/en/SSEPGG_11.5.0/com.ibm.db2.luw.apdv.porting.doc/doc/c_compat_oracle.html

您还可以使用数据库转换工作台来协助从 Oracle 转换到 Db2

https://www.ibm.com/developerworks/community/groups/service/html/communityview?communityUuid=05901c97-75b2-47a1-9c32-25f748855913

【讨论】:

    猜你喜欢
    • 2013-10-07
    • 2020-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-06
    • 2021-10-24
    • 1970-01-01
    相关资源
    最近更新 更多