我正在尝试使用CTE(通用表表达式)的简单合并语句。但它给出了一个错误
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) /
WITH子句与SELECT语句一起使用。
从文档中: “您可以在任何顶级 SELECT 语句和大多数子查询类型中指定此子句。” (强调我的)。
如果您确实需要这样做,可以使用ORAFAQ中的解决方法。主要博客文章在这里。