dポイントプレゼントキャンペーン実施中!

お世話になります。
oracleのMERGE文で
アンマッチ時のインサート文にSELECTで
引いた値を入れたいのですが、
ORA-00926エラーになってしまいます。
MERGEのインサート文にSELECTは使えないのでしょうか?

尚、INSERT文単体ではエラーなく挿入できます。

以上、よろしくお願いいたします。

以下、SQLです。
MERGE INTO USER_MASTER UM
USING USER_MASTER_IMPORT UI
ON ( UM.USER_ID = UI.USER_ID)
-- 既存レコードの更新
WHEN MATCHED THEN
UPDATE SET
USER_NAME = USER_MASTER_IMPORT.USER_NAME
-- 新規レコードの作成
WHEN NOT MATCHED THEN
INSERT
( USER_ID, USER_NAME, NO ,SHOZOKU_NAME)
SELECT
UI.USER_ID, UI.USER_NAME, UI.NO, SH.SHOZOKU_NAME
FROM
USER_MASTER_IMPORT UI
LEFT JOIN SHOZOKU SH ON(UI.USER_ID = SH.USER_ID)

A 回答 (1件)

USINGで指定するマージ対象をテーブルでなく、インラインビューにすれば、


アンマッチの際にインサートする項目は全て揃っているハズです。

MERGE INTO USER_MASTER UM
USING
(
SELECT UI.USER_ID, UI.USER_NAME, UI.NO, SH.SHOZOKU_NAME
FROM USER_MASTER_IMPORT UI
LEFT JOIN SHOZOKU SH
ON (UI.USER_ID = SH.USER_ID
) UI
ON ( UM.USER_ID = UI.USER_ID)
-- 既存レコードの更新
WHEN MATCHED THEN
UPDATE SET
USER_NAME = USER_MASTER_IMPORT.USER_NAME
-- 新規レコードの作成
WHEN NOT MATCHED THEN
INSERT ( USER_ID, USER_NAME, NO ,SHOZOKU_NAME)
VALUES ( UI.USER_ID, UI.USER_NAME, UI.NO, UI.SHOZOKU_NAME)
    • good
    • 0
この回答へのお礼

ビューを使用する発想がありませんでした。
上記SQLでうまくいきました。

素早い回答ありがとうございました。

お礼日時:2007/05/21 15:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す