5

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)
/
4

1 に答える 1

5

WITH句は、SELECTステートメントで使用するためのものです。

ドキュメントから: 「この句は、任意のトップレベルのSELECTステートメントおよびほとんどのタイプのサブクエリで指定できます。」(私の強調)。

これを本当に行う必要がある場合は、ORAFAQから考えられる回避策を次に示します。主なブログ記事はこちらです。

于 2011-05-19T22:09:27.750 に答える