-1
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())
가 발생 오류는 우리가 MERGE 키워드를 사용할 수 있습니다 보여줍니다, DB2에서
[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]
입니다. https://www.ibm.com/developerworks/community/blogs/SQLTips4DB2LUW/entry/merge?lang=en
'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()) ) 병합 ' – sagi