개인 공부/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);