2017-09-24 2 views
-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

+1

'MERGE'라는 별칭을 다른 것으로 변경해보십시오. 아마도 예약어에 문제가있을 수 있습니다. – sagi

+0

@sagi에는 DB2에 MERGE 키워드가 사용됩니다. https://www.ibm.com/developerworks/community/blogs/SQLTips4DB2LUW/entry/merge?lang=en – Aliy

+0

'MERGE'문이 아닌지 확인하십시오. 'MERGE' 별명. (123pk, '6', '11 ','22 ', 33', CURDATE()) ) 병합 ' – sagi

답변

1

IBM i 버전 7.1에서 Merge가 i 용 DB2에 추가되었습니다. 이전 버전 (6.1 이전)을 사용하는 경우 서비스가 중단 될뿐만 아니라 MERGE 문을 사용할 수 없습니다.

관련 문제