読者です 読者をやめる 読者になる 読者になる

MERGE文実行時にORA-00904

Oracle で、MERGE 文の ON 句で指定したカラムを UPDATE 文の中に入れるとエラーになります。

MERGE INTO hoge
 ('aaa' AS col1, 'bbb' AS col2) prm
 ON (hoge.col1 = prm.col1)
WHEN MATCHED THEN UPDATE SET
 col1 = prm.col1
 ,col2 = prm.col2
WHEN NOT MATCHED THEN INSERT
 (col1, col2)
 VALUES (prm.col1, prm.col2)

というSQLを実行すると、3行目で「ORA-00904: 無効な識別子です」となり怒られます。しばらく気づかず数十分ハマりました。