반응형
ORACLE MERGE INTO(UPSERT) 예제입니다.
오라클 머지 인투(ORACLE MERGE INTO) 구문은 아래의 If 조건문과 비슷합니다.
조건1이 성립하면 update 그렇지 않으면 insert를 수행하는 구문입니다.
오라클 9i 버전 이상에서 사용이 가능합니다.
/* PL/SQL에서 사용하는 일반적인 IF문 */ IF 조건1 = TRUE THEN UPDATE 쿼리 ELSE INSERT 쿼리 END IF;
상황에 따라 IF문을 사용한 구문과 MERGE를 사용한 구문의 성능 차이가 발생하여
필요 시 MERGE 구문을 적절히 사용하시면 됩니다.
아래는 MERGE 구분의 형식입니다.
/* MERGE INTO 구문 형식 */ MERGE INTO TABLE_NAME TBL1 USING TARGET_TABLE TABL2 -- 동일한 테이블일 경우 TARGET_TABLE을 DUAL로 지정 ON TBL1.COLUMN_NAME = TABL2.COLUMN_NAME -- 두 테이블을 JOIN하는 조건문 WHEN MATCHED THEN --조건에 맞을 경우 UPDATE SET COL1 = VAL1 ,COL2 = VAL2 ,COL3 = VAL3 WHEN NOT MATCHED THEN --조건에 맞지 않을 경우 INSERT(COL1, COL2, COL3) VALUES(VAL1, VAL2, VAL3)
위의 형식에 맞추어 오라클 머지(MERGE) 구문을 구현할 수 있습니다.
아래는 MERGE INTO를 사용한 예제문입니다.
/* MERGE INTO 사용 예문 */ MERGE INTO USER_MASTER UM -- Table USING ( SELECT UI.USER_ID, UI.USER_NAME, UI.NO, UG.GROUP_NAME FROM USER_MASTER_IMPORT UI LEFT JOIN USER_GROUP UG ON UI.USER_ID = UG.USER_ID ) UI -- Target table ON (UM.USER_ID = UI.USER_ID) -- 대상테이블(Target table)과의 JOIN 조건 -- 조건이 일치할 경우 WHEN MATCHED THEN UPDATE SET USER_NAME = USER_MASTER_IMPORT.USER_NAME -- 일치하지 않을 경우(10G에서 사용이 안될 경우도 있습니다.) WHEN NOT MATCHED THEN INSERT (USER_ID, USER_NAME, NO, GROUP_NAME) --INSERT 시 INTO를 사용하지 않음에 주의 VALUES (UI.USER_ID, UI.USER_NAME, UI.NO, UI.GROUP_NAME)
반응형
'Database > ORACLE' 카테고리의 다른 글
오라클 클라이언트 설치 방법(Oracle client 11g) (8) | 2014.04.22 |
---|---|
오라클 설치 오류 해결 방법(Oracle Environment variable "PATH") (8) | 2014.04.22 |
윈도우7 오라클 11g 설치 (15) | 2013.12.04 |
오라클 설치 시 WFMLRSVCApp.ear 파일을 찾을 수 없습니다.(Oracle 11g error WFMLRSVCApp.ear file missing during Installation) (22) | 2013.12.04 |
Oracle 11g ADRCI를 이용한 ADR 관리 (0) | 2013.03.28 |
오라클 프로시저(Oracle Procedure) 기초 예제 (0) | 2013.02.07 |
토드(Toad)에서 오라클 프로시져(Oracle Procedure) 실행 방법 (0) | 2013.02.07 |
START WITH ~ CONNECT BY PRIOR 구문(계층 구조) (0) | 2013.01.31 |
[오라클,ORACLE] 쿼리 실행 시간 (0) | 2013.01.22 |
오라클 UNION 사용 시 ORDER BY 처리 (2) | 2013.01.22 |