Oracle CTE Merge - PullRequest
       15

Oracle CTE Merge

4 голосов
/ 20 мая 2011

Я пытаюсь выполнить простой оператор слияния, используя 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 Ответ

5 голосов
/ 20 мая 2011

Предложение WITH предназначено для использования с оператором SELECT.

Из документов: «Вы можете указать это предложение в любом операторе SELECT верхнего уровня и в большинстве типов подзапросов». (выделение мое).

Вот возможный обходной путь , если вам действительно нужно это сделать, из ORAFAQ. Основная запись блога находится здесь.

...