2012-07-04 38 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