【问题标题】:Merge statement generate exception, but why合并语句产生异常,但是为什么
【发布时间】:2013-01-05 12:05:50
【问题描述】:

此合并语句引发 ORA-00905:missing keyword 异常。可能是什么问题?与 WHEN MATCHED 分支有关吗?

MERGE INTO WORKERPROJECT TARGET
USING (SELECT distinct
               w.worker_id,
               w.worker_type,
               w.project_id worker_project_id, 
               p.project_id project_project_id,
               p.dedicated_project_leader,
               p.dedicated_lead_developer,
               p.dedicated_lead_consultant,
               p.dedicated_supervisor
       from WORKER w 
       join PROJECT p on w.project_id = p.project_id
      ) SOURCE
   ON (TARGET.FK_worker_id=SOURCE.WORKER_ID)
 WHEN MATCHED THEN INSERT (TARGET.FK_WORKER_ID, TARGET.FK_PROJECT_ID,TARGET.IS_ACTIVE,POSITION) 
  VALUES (SOURCE.WORKER_ID,SOURCE.worker_project_id,'IS_ACTIVE',SOURCE.worker_type);

【问题讨论】:

  • 你能在匹配时插入吗?我以为你只能在不匹配时插入。 oracle-base.com/articles/10g/merge-enhancements-10g.php
  • 好问题。是的,也许你说得对,我试试看……无论如何 --> docs.oracle.com/cd/B19306_01/server.102/b14200/…
  • 生病了,现在好了。请写下答案,我会投票+接受!我不知道为什么会这样,但我否定了 on 条件,它会好的。
  • 想一想:如果行已经存在,为什么还要插入? (匹配时)。
  • 是的,但我有一点奇怪的合并,我会在另一个问题中展示它

标签: sql oracle merge merge-statement


【解决方案1】:

根据http://www.oracle-base.com/articles/10g/merge-enhancements-10g.php

您只能在不匹配时进行插入。

【讨论】:

    猜你喜欢
    • 2017-09-16
    • 1970-01-01
    • 2014-03-31
    • 1970-01-01
    • 2014-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多