2012-07-04 2 views
1

У меня есть проблема с этим запросом:Merge команды вызывает «отсутствует ключевое слово» ошибка

MERGE INTO qot 
    USING dual 
    ON (qot_id = 1023125885) 
    WHEN MATCHED AND qot_exc_id = 4 THEN UPDATE SET qot_exc_id = 259 
    WHEN MATCHED AND qot_exc_id = 6 THEN UPDATE SET qot_exc_id = 131; 

я получаю сообщение об ошибке: "Missing ключевого слова. Может ли кто-нибудь дать мне какие-нибудь подсказки?

Спасибо!

Greetings,

r.

ответ

4

Я не знаю, почему вы пытаетесь использовать MERGE, когда хотите обновлять, а не вставлять. Вы не можете добавлять условия в предложение WHEN, как вы это делаете - см. documentation.

Почему бы просто не сделать это:

update qot 
set qot_exc_id = case qot_exc_id 
        when 4 then 259 
        when 6 then 131 
        end 
where qot_id = 1023125885 
and qot_exc_id in (4,6); 

Если вам действительно нужен MERGE, то вы хотите что-то вроде:

MERGE INTO qot 
USING dual 
ON (qot_id = 1023125885) 
WHEN MATCHED THEN 
    UPDATE SET qot_exc_id = case qot_exc_id 
          when 4 then 259 
          when 6 then 131 
          else qot_exc_id 
          end; 

или, возможно:

MERGE INTO qot 
USING dual 
ON (qot_id = 1023125885 and qot_exc_id in (4,6)) 
WHEN MATCHED THEN 
    UPDATE SET qot_exc_id = case qot_exc_id 
          when 4 then 259 
          when 6 then 131 
          end; 
+0

Спасибо за обратную связь! Это был только пример. Я хочу более сложное заявление. – user897237

+0

Я имею в виду, что я хочу сделать заявление со вставками. – user897237

+0

Еще раз спасибо ... У меня есть еще одна проблема с последним слиянием ... Могу ли я обновить, только если условие передано? – user897237

Смежные вопросы