【问题标题】:Conversion From DB2 to Oracle:从 DB2 到 Oracle 的转换:
【发布时间】:2020-12-22 08:47:15
【问题描述】:

我正在研究 DB2 到 Oracle 的转换,我想知道这个 TABLE 关键字在 DB2 中是什么意思,或者如何在 oracle 中转换它??此代码是表格函数的一部分。

SELECT   A.A_REQUESTER,
         A.A_TIME,
         A.A_NAME,
         F.LOCAL,
         F.MSGS
FROM STRTOK_SPLIT_IS_TABLES A( A_REQUESTER,
                               A_TIME,
                               A_NAME, 
                               A_CODE ),
TABLE( SYSPROC.GET_MSGS(
       INLOCAL,
       A.A_CODES,
( SELECT TOKEN FROM STRTOK_SPLIT_TABLES_USHARE B
  WHERE A.A_REQUESTER = B.REQUESTER
  AND A.A_TIME      = B.ETIME
  AND A.A_NAME       = B.NAME
  AND B.ORDINAL=1 ) ) 
    ) F;

【问题讨论】:

标签: sql database oracle db2 migration


【解决方案1】:

我不熟悉 DB2,但如果它与 Oracle 具有相同的含义,它用于将类型对象或函数调用“转换”到表中,以便在 SQL 语句中引用它。

下面的 (Oracle) 示例将类型 SYS.ODCIVARCHAR2LIST 连接到 DUAL。 SYS.ODCIVARCHAR2LIST 类型定义为

CREATE OR REPLACE TYPE SYS.ODCIVARCHAR2LIST FORCE AS VARRAY(32767) OF VARCHAR2(4000);

使用 TABLE 关键字可以像引用实际表一样引用类型。如果您使用的是 Oracle 19,则不再需要 TABLE 关键字。

查询

SELECT *
  FROM DUAL,
       TABLE (sys.odcivarchar2list ('tab_val_1',
                                    'tab_val_2',
                                    'tav_val_3',
                                    'tab_val_4'));

结果

   DUMMY    COLUMN_VALUE
________ _______________
X        tab_val_1
X        tab_val_2
X        tav_val_3
X        tab_val_4

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-07
    • 2020-01-31
    • 2015-07-24
    • 2017-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多