【问题标题】:Oracle CTE Merge甲骨文 CTE 合并
【发布时间】:2011-08-29 05:29:15
【问题描述】:

我正在尝试使用 CTE(Common table expression) 的简单合并语句。但它给出了一个错误

MERGE INTO  emp targ USING (
*
ERROR at line 4:
ORA-00928: missing SELECT keyword

合并语句中是否不允许使用 CTE?我的 Sql 如下:

WITH cte AS (
  SELECT empno, ename 
    FROM EMP)
MERGE INTO emp targ USING (SELECT * 
                             FROM cte) src
  ON (targ.empno = src.empno)
WHEN MATCHED THEN update 
   SET targ.ename = src.ename
WHEN NOT MATCHED THEN insert
    (empno,ename)
  VALUES
    (src.empno,src.ename)
/

【问题讨论】:

    标签: sql oracle merge ora-00928


    【解决方案1】:

    WITH 子句用于 SELECT 语句。

    From the documents: “您可以在任何顶级 SELECT 语句和大多数类型的子查询中指定此子句。” (强调我的)。

    Here is a possible workaround 如果你真的需要这样做,来自 ORAFAQ。 The main blog writeup is here.

    【讨论】:

      猜你喜欢
      • 2019-01-30
      • 2016-08-13
      • 1970-01-01
      • 2011-10-04
      • 2012-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-22
      相关资源
      最近更新 更多