Db2 无法将序列对象与UNION一起使用
当我在一句话中插入多行时:Db2 无法将序列对象与UNION一起使用,db2,zos,Db2,Zos,当我在一句话中插入多行时: INSERT INTO ORG01.RC_REFERENCIA(O9030_IDEMPR,O9030_COD_INT,O9030_TIP_REF,O9030_ID_REFER,O9030_FEC_ALT,O9030_UIDALTA ) SELECT '0015',(NEXT VALUE FOR OR4ADM.SQ_REFCRU),'NT','10001','2008-12-31 00:00:00.000','ab110699' FROM SYSIBM.SYSDUM
INSERT INTO ORG01.RC_REFERENCIA(O9030_IDEMPR,O9030_COD_INT,O9030_TIP_REF,O9030_ID_REFER,O9030_FEC_ALT,O9030_UIDALTA )
SELECT '0015',(NEXT VALUE FOR OR4ADM.SQ_REFCRU),'NT','10001','2008-12-31 00:00:00.000','ab110699' FROM SYSIBM.SYSDUMMY1 UNION ALL
SELECT '0015',(NEXT VALUE FOR OR4ADM.SQ_REFCRU),'NT','10002','20 08-12-31 00:00:00.000','ab017705' FROM SYSIBM.SYSDUMMY1
我得到这个错误:
[插入-0行,0.265秒][错误代码:-348,SQL状态:428F9]
无法在此上下文中指定OR4ADM.SQ_REFCRU的下一个值。
SQLCODE=-348,SQLSTATE=428F9,DRIVER=4.18.60
当我仅尝试使用一条select语句时,效果很好:
INSERT INTO ORG01.RC_REFERENCIA(O9030_IDEMPR,O9030_COD_INT,O9030_TIP_REF,O9030_ID_REFER,O9030_FEC_ALT,O9030_UIDALTA )
SELECT '0015',(NEXT VALUE FOR OR4ADM.SQ_REFCRU),'NT','10001','2008-12-31 00:00:00.000','ab110699' FROM SYSIBM.SYSDUMMY1
。。执行1条语句,影响1行,执行/提取时间:
0.110/0.000秒[1次成功,0次警告,0次错误]
知道如何解决此错误吗?这是一个类似的解决方案 以下是
插入从选择查询,已重写以避免限制
INSERT INTO ORG01.RC_REFERENCIA(O9030_IDEMPR,O9030_COD_INT,O9030_TIP_REF,O9030_ID_REFER,O9030_FEC_ALT,O9030_UIDALTA )
SELECT a,OR4ADM.SQ_REFCRU.NEXTVAL,b,c,d,e
FROM (
SELECT '0015','NT','10001','2008-12-31 00:00:00.000','ab110699' FROM SYSIBM.SYSDUMMY1
UNION ALL
SELECT '0015','NT','10002','2008-12-31 00:00:00.000','ab017705' FROM SYSIBM.SYSDUMMY1
) AS t(a,b,c,d,e)
秘密在于首先将数据创建为CTE
,然后将序列
对象添加到最外层的选择
,这与
以下是插入从选择查询,已重写以避免限制
INSERT INTO ORG01.RC_REFERENCIA(O9030_IDEMPR,O9030_COD_INT,O9030_TIP_REF,O9030_ID_REFER,O9030_FEC_ALT,O9030_UIDALTA )
SELECT a,OR4ADM.SQ_REFCRU.NEXTVAL,b,c,d,e
FROM (
SELECT '0015','NT','10001','2008-12-31 00:00:00.000','ab110699' FROM SYSIBM.SYSDUMMY1
UNION ALL
SELECT '0015','NT','10002','2008-12-31 00:00:00.000','ab017705' FROM SYSIBM.SYSDUMMY1
) AS t(a,b,c,d,e)
秘密在于首先将数据创建为CTE
,然后将SEQUENCE
对象添加到最外层的SELECT