无法在DB2中合并
问题描述:
我试图在DB2 AS400中执行UPSERT(更新或插入)。我遵循了IBM指定的准则。但是,它表示MERGE无效。这是我的查询。无法在DB2中合并
MERGE INTO myTable AS tab
USING (VALUES
(123pk,'6','11','22','33',CURDATE())
) AS merge (TSPK,adf1,adf2,adf3,adf4,adf5)
ON tab.TSPK= merge.TSPK
WHEN MATCHED THEN
UPDATE SET tab.TSPK= merge.TSPK,
tab.adf1= merge.adf1,
tab.adf2= merge.adf2,
tab.adf3= merge.adf3,
tab.adf4= merge.adf4
tab.adf5= CURDATE()
WHEN NOT MATCHED THEN
INSERT (TSPK,adf1,adf2,adf3,adf4,adf5)
VALUES (merge.TSPK, merge.adf1, merge.adf2,merge.adf3,merge.adf4,CURDATE())
它抛出的错误是
[SQL0104] Token MERGE was not valid. Valid tokens: (CL END GET SET CALL DROP FREE HOLD LOCK OPEN WITH ALTER. [SQL State=42601, DB Errorcode=-104]
在DB2中,它显示了我们可以用MERGE关键字。 https://www.ibm.com/developerworks/community/blogs/SQLTips4DB2LUW/entry/merge?lang=en
答
合并已添加到IBM i版本7.1上的DB2 for i。如果您使用的是早期版本(6.1或更早版本),则不仅无法使用,而且无法使用MERGE
声明。
尝试将别名“MERGE”更改为别的。也许这是一个保留字的问题。 – sagi
@sagi,在DB2中使用MERGE关键字。请检查https://www.ibm.com/developerworks/community/blogs/SQLTips4DB2LUW/entry/merge?lang=en – Aliy
不是'MERGE'语句。 MERGE'别名。 - >'(123pk,'6','11','22','33',CURDATE()) )AS merge' – sagi