嵌套表表达式不适用于DB2z/OS

嵌套表表达式不适用于DB2z/OS,db2,zos,Db2,Zos,以下查询在DB2LUW中运行时有效 SELECT TEMP1.SINIESTRO, TEMP1.POLIZA FROM TABLE(VALUES ('00000031955190','0107737793'), ('00000118659978','0107828212'), ('00000118978436','0095878120'), ('00000122944473','0106845043') ) TEMP1(SINIESTRO, POLIZ

以下查询在DB2LUW中运行时有效

SELECT 
  TEMP1.SINIESTRO, 
  TEMP1.POLIZA
FROM TABLE(VALUES
    ('00000031955190','0107737793'),
    ('00000118659978','0107828212'),
    ('00000118978436','0095878120'),
    ('00000122944473','0106845043')
) TEMP1(SINIESTRO, POLIZA);
当我尝试在DB2forz/OS中使用它时,会出现以下错误:
SQL错误[42601]:非法符号“,”。一些可能合法的符号是:在基数内(超过)。SQLCODE=-104,SQLSTATE=42601,DRIVER=3.72.24

我也试过CTE

WITH X(foo, bar, baz) AS (
VALUES (0, 1, 2), (3, 4, 5), (6, 7, 8)
) SELECT * FROM X; 
我得到这个错误:
SQL错误[42601]:非法符号“X”。一些可能合法的符号是:DSN_INLINE_OPT_HINT。SQLCODE=-104,SQLSTATE=42601,DRIVER=3.72.24


你知道我应该做些什么来让它工作吗?

目前发布的Db2-for-Z/OS版本没有像其他Db2平台那样的VALUES子句

Db2-for-Z/OS有一个名为
sysibm.sysdummy1
的单行表,有些人使用它

但是,如果可以引用临时表而不是
sysibm.sysdummy1
,则代码看起来更干净

在DB2forz/OS上运行语句的一种笨拙方法(存在其他方法)是使用CTE,它联合来自sysibm.sysdummy1的行, (如果合适,在子查询中使用
union all
):


VALUES语句在Db2-for-Z/OS中还不可用,因此替换为对sysibm.sysdummy1或temp表的查询。
with temp1 (SINIESTRO, POLIZA)
as
(
   select '00000031955190','0107737793' from sysibm.sysdummy1
   union
   select '00000118659978','0107828212' from sysibm.sysdummy1
   union
   select '00000118978436','0095878120' from sysibm.sysdummy1
   union
   select '00000122944473','0106845043' from sysibm.sysdummy1
)
SELECT 
  TEMP1.SINIESTRO, 
  TEMP1.POLIZA
FROM temp1;