0

Oracleで2つのテーブルをマージしようとしていますが、使用しているクエリは

merge into sales_history sh
 using sales s
 on (s.prod=sh.prod and s.month=sh.month)
 when matched 
      update set sh.amount = s.amount
 when not matched 
      insert (sh.prod,sh.month,sh.amount)
      values (s.prod,s.month,s.amount);

このクエリを実行するたびに、次のエラーが発生します。

ORA-00905 キーワードがありません。

誰でもこれで私を助けることができますか?

4

1 に答える 1

2
 when matched 
      update set sh.amount = s.amount
 when not matched 
      insert (sh.prod,sh.month,sh.amount)

MERGE構文が正しくありません。THENキーワードがありません。

ドキュメントから:

merge_update_clause ::=

WHEN MATCHED THEN
   UPDATE SET ...

merge_insert_clause ::=

WHEN NOT MATCHED THEN
   INSERT
于 2015-11-10T07:30:18.157 に答える