2017-09-24 10 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()) 

エラーが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] 

あり、それは我々がMERGEキーワードを使用することができます示しています。 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()) )AS merge' – sagi

答えて

1

IBM iバージョン7.1でMergeがDB2 for iに追加されました。以前のバージョン(6.1以前)を使用している場合、サービスが停止するだけでなく、MERGEステートメントを使用することはできません。

関連する問題