MERGE문 관련 오류 0 4 180

by 권현국 [SQL Query] [2018.09.13 18:17:40]


■ MERGE문 에러

-- 1. 임시테이블1
CREATE TABLE IMSI_TEST1 AS
SELECT
	'1' AS COL1,
	'2' AS COL2,
	CAST('' AS VARCHAR2(1)) AS COL3
FROM DUAL
;

-- 2. 임시테이블2
CREATE TABLE IMSI_TEST2 AS
SELECT
	'1' AS COL1,
	'X' AS COL3
FROM DUAL
;


-- 3. MERGE문 UPDATE 에러
MERGE INTO
      ( SELECT * FROM IMSI_TEST1
        WHERE COL3 IS NULL
         ) A
USING ( SELECT
          *
        FROM IMSI_TEST2
        WHERE COL3 IS NOT NULL
        ) B
ON ( A.COL1 = B.COL1 )
WHEN MATCHED THEN
UPDATE SET
	A.COL3 = B.COL3
;
-- [Error] Execution (22: 6): ORA-00903: 테이블명이 부적합합니다


-- 4. MERGE문 UPDATE 성공
MERGE INTO IMSI_TEST1 A
USING ( SELECT
          *
        FROM IMSI_TEST2
        WHERE COL3 IS NOT NULL
        ) B
ON ( A.COL1 = B.COL1 )
WHEN MATCHED THEN
UPDATE SET
	A.COL3 = B.COL3
;
-- UPDATE 성공

/*

TOAD 사용중인데 해당 예제의 MERGE문 실행하면 에러가 발생합니다.

문법은 맞는거 같은데 어디가 잘못된건지 조언 부탁드립니다.

*/

 

by 야신 [2018.09.13 18:40:06]
MERGE INTO IMSI_TEST1 A
USING ( SELECT
          *
        FROM IMSI_TEST2
        WHERE COL3 IS NOT NULL
        ) B
ON ( A.COL1 = B.COL1 )
 WHERE A.COL3 IS NULL
WHEN MATCHED THEN
UPDATE SET
    A.COL3 = B.COL3


이렇게 되야 할것 같은데요

 


by KUHO [2018.09.14 09:12:47]

해당 퀴리 돌려보니

ora-00905 : 누락된 키워드 라는 에러 메세지 떠요

문법이 잘못된거 같습니다.

 


by 우리집아찌 [2018.09.14 12:40:46]
MERGE INTO IMSI_TEST1 A
USING ( SELECT
          *
        FROM IMSI_TEST2
        WHERE COL3 IS NOT NULL
        ) B
ON ( A.COL1 = B.COL1 )
WHEN MATCHED THEN
UPDATE SET
    A.COL3 = B.COL3
 WHERE A.COL3 IS NULL 

 


by KUHO [2018.09.14 16:07:22]

에러 원인은 모르겠으나

결과가 같은 방법이라 많은 도움이 되었습니다.

감사합니다.

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입