2012-07-04 41 views
1

我有此查詢的問題:合併命令導致「缺少關鍵字」錯誤

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; 

我發現了一個錯誤:「缺少關鍵字」。 有人可以給我任何線索嗎?

謝謝!

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