Ошибка команды слияния Oracle отсутствует ключевое слово

Я пытаюсь объединить две таблицы в Oracle и запрос, который я использую

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 отсутствует ключевое слово.

Кто-нибудь может мне с этим помочь.

1 ответ

Решение
 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
Другие вопросы по тегам