db2插入多个记录返回[42601][-104] ILLEGAL SYMBOL“,”

gt0wga4j  于 12个月前  发布在  DB2
关注(0)|答案(1)|浏览(163)

尝试执行带有多个值子句的insert语句。接收错误:
[42601][-104] ILLEGAL SYMBOL ",". SOME SYMBOLS THAT MIGHT BE LEGAL ARE: FOR <END-OF-STATEMENT> NOT ATOMIC. SQLCODE=-104, SQLSTATE=42601, DRIVER=4.26.14
这是一个声明:

insert into
    CLAIM_ITEM  (CLAIM_NBR,CLMS_ITEM_SEQ_NBR,ITEM_TYPE_CODE,ITEM_STAT_CODE,ADD_DATE,UPD_DATE_TIME,FOL_PROC_INDT,ITEM_CODE,ALT_ITEM_DESC)
values
    (479156072, 1, 'C', 'REPT', '2023-08-14', '2023-08-14 23:20:59.436', ' ', 'TBC', 'Wood top black metal coff'),
    (479156072, 2, 'C', 'REPT', '2023-08-14', '2023-08-14 23:20:59.436', ' ', 'TVBS', 'LG TV'),
    (479156072, 3, 'C', 'REPT', '2023-08-14', '2023-08-14 23:20:59.436', ' ', 'SOFA', 'Off White fabric sofa'),
    (479156072, 4, 'C', 'REPT', '2023-08-14', '2023-08-14 23:20:59.436', ' ', 'BDHQ', 'Q Grey HB master bedroom')
;

我做了RTFM,并完全遵循IBM的这个例子:https://www.ibm.com/docs/en/i/7.1?topic=statement-inserting-rows-using-values-clause
任何地方都绝对没有错误的逗号(至少根据“TFM”)。特别令人抓狂的是,错误消息中的“可能法律的的符号”列表是空白的,所以即使它也不能告诉我它想要什么。
它只处理一个值列表,但我一添加更多值,它就出错了。
在值列表之间省略逗号也会产生同样的错误,但它会将','列为预期符号。
这是驾驶我 bat 屎疯了。典型的IBM产品。严格按照手册操作,它总是不适合你的情况。错误消息是完全没有帮助和神秘的。
我使用的是DataGrip,驱动程序是com.ibm.db2.jcc.DB2Driver ver4.26.14。这些是由Ensono托管的db2示例确定的(我有DataGrip指向它),所以我必须使用它。
我试着把方言从Z/os改成LUW也不管用。
无论如何,我将把它放到我的Java代码中,看看它是否在那里工作。也许(希望)这只是一个DataGrip的事情。
如上所述,遵循IBM的这个例子:https://www.ibm.com/docs/en/i/7.1?topic=statement-inserting-rows-using-values-clause
我试着把方言从Z/os改成LUW
尝试了一个值列表,它可以工作。只要我添加更多(用逗号分隔),它就会出错。
尝试在值列表之间省略逗号,但收到相同的错误,但随后它将“,”列为预期符号。
更新-进一步的调查显示,我们是在zos版本12,它不支持这种类型的插入(https://www.ibm.com/docs/en/db2-for-zos/12?topic=statements-insert
然而,这种构造是有效:

insert into
UNITEST.CLAIM_ITEM
(CLAIM_NBR,CLMS_ITEM_SEQ_NBR,ITEM_TYPE_CODE,ITEM_STAT_CODE,ADD_DATE,UPD_DATE_TIME,FOL_PROC_INDT,ITEM_CODE,ALT_ITEM_DESC)
SELECT 479156072, 1, 'C', 'REPT', '2023-08-14', '2023-08-14 23:20:59.436', ' ', 'TBC', 'Wood top black metal coff' FROM SYSIBM.SYSDUMMY1 UNION ALL
SELECT 479156072, 2, 'C', 'REPT', '2023-08-14', '2023-08-14 23:20:59.436', ' ', 'TVBS', 'LG TV' FROM SYSIBM.SYSDUMMY1 UNION ALL
SELECT 479156072, 3, 'C', 'REPT', '2023-08-14', '2023-08-14 23:20:59.436', ' ', 'SOFA', 'Off White fabric sofa' FROM SYSIBM.SYSDUMMY1 UNION ALL
SELECT 479156072, 4, 'C', 'REPT', '2023-08-14', '2023-08-14 23:20:59.436', ' ', 'BDHQ', 'Q Grey HB' FROM SYSIBM.SYSDUMMY1

类似stackoverflow帖子在这里:insert multiple rows into DB2 database

7y4bm7vi

7y4bm7vi1#

更新-进一步的调查显示,我们是在zos版本12,它不支持这种类型的插入(https://www.ibm.com/docs/en/db2-for-zos/12?topic=statements-insert
然而,这种构造是有效:

insert into
    UNITEST.CLAIM_ITEM
    (CLAIM_NBR,CLMS_ITEM_SEQ_NBR,ITEM_TYPE_CODE,ITEM_STAT_CODE,ADD_DATE,UPD_DATE_TIME,FOL_PROC_INDT,ITEM_CODE,ALT_ITEM_DESC)
    SELECT 479156072, 1, 'C', 'REPT', '2023-08-14', '2023-08-14 23:20:59.436', ' ', 'TBC', 'Wood top black metal coff' FROM SYSIBM.SYSDUMMY1 UNION ALL
    SELECT 479156072, 2, 'C', 'REPT', '2023-08-14', '2023-08-14 23:20:59.436', ' ', 'TVBS', 'LG TV' FROM SYSIBM.SYSDUMMY1 UNION ALL
    SELECT 479156072, 3, 'C', 'REPT', '2023-08-14', '2023-08-14 23:20:59.436', ' ', 'SOFA', 'Off White fabric sofa' FROM SYSIBM.SYSDUMMY1 UNION ALL
    SELECT 479156072, 4, 'C', 'REPT', '2023-08-14', '2023-08-14 23:20:59.436', ' ', 'BDHQ', 'Q Grey HB' FROM SYSIBM.SYSDUMMY1

类似stackoverflow帖子在这里:insert multiple rows into DB2 database

相关问题