Oracle CTE Merge
Я пытаюсь простой оператор слияния, используя 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)
/
1 ответ
Решение
Предложение WITH предназначено для использования с оператором SELECT.
Из документов: "Вы можете указать это предложение в любом операторе SELECT верхнего уровня и в большинстве типов подзапросов". (акцент мой).
Вот возможный обходной путь, если вам действительно нужно это сделать, от ORAFAQ. Основная рецензия на блог здесь.