Notice
Recent Posts
Recent Comments
관리 메뉴

Developer Gonie

MERGE INTO 문(ON절의 조건에 따른 분기 실행) 본문

개인 공부/Oracle

MERGE INTO 문(ON절의 조건에 따른 분기 실행)

이대곤 2023. 3. 31. 11:06

MERGE INTO 문의 기능

UPDATE, INSERT, DELETE 문을 각각 상황에 따라 분기시켜 처리하기 위해 사용된다.

 

기본 구조는 아래와 같다.


MERGE

INTO 테이블

USING 테이블 ON 조건

WHEN MATCHED THEN ~

WHEN NOT MATCHED THEN ~

 

그리고 실행흐름은 아래와 같다.


ON에 사용된 조건절의 결과가 USING 테이블에 대해 TRUE이면 
WHEN MATCHED 의 THEN 절이 실행되며

반대로 FALSE이면 
WHEN MATCHED 의 THEN 절이 실행된다.

 

예시1

MERGE 
 INTO emp a
USING dual
   ON (a.empno = 7788)
 WHEN MATCHED THEN
      UPDATE
         SET a.deptno = 20
 WHEN NOT MATCHED THEN
      INSERT (a.empno, a.ename, a.deptno)
      VALUES (7788, 'SCOTT', 20);

예시2

MERGE 
 INTO job_history a
USING emp b
   ON (a.empno = 7788 AND a.empno = b.empno)
 WHEN MATCHED THEN
      UPDATE
         SET a.job = b.job
           , a.deptno = b.deptno
 WHEN NOT MATCHED THEN
      INSERT (a.empno, a.job, a.deptno)
      VALUES (b.empno, b.job, b.deptno);
Comments