2015-11-10 1 views
0

Я пытаюсь объединить две таблицы в 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 missing keyword.

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

+0

'когда подобрано ТОГДА обновить .... если не соответствует ТОГДА ... ' –

+0

Да, я заметил ошибку, но спасибо вам большое за answe кольцо :) –

ответ

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

Ваш MERGE синтаксис неверен. Вам не хватает ключевого слова THEN.

Из documentation: merge_update_clause

:: =

WHEN MATCHED THEN 
    UPDATE SET ... 

merge_insert_clause :: =

WHEN NOT MATCHED THEN 
    INSERT