问题描述
我正在研究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;
解决方法
我对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