oracle merge 실사용 예제(데이터가 존재하면 Update, 존재하지 않으면 Insert 실행) :: 소림사의 홍반장!

MERGE 문의 이해

  • - MERGE문은 조건에 따라서 데이터의 삽입,갱신,삭제 작업을 한번에 할 수 있다.
  • - 해당 행이 존재하는 경우 UPDATE(DELETE포함 할 수 있음)를 수행하고, 새로운 행일경우 INSERT를 수행한다.
  • - 대상 테이블에 대한 UPDATE/INSERT 조건은 ON절에 의해 결정된다.
  • - MERGE문에서 CLOB 사용시 업데이트 할 내용이 2000bytes가 넘을때 ORA-00600 오류가 발생하며, patch set 11.2.0.2 버전으로 해결할 수 있다.

 

MERGE INTO TB_S07_020AOGG010 m
USING ( select COMPANY,SEQ,CMX_EMPN,APPR_OBJECT_NAME,FULL_PATH from TB_S07_020NOGG010) e
ON ( m.SEQ = e.SEQ AND M.COMPANY = E.COMPANY)
WHEN MATCHED THEN 
  UPDATE SET m.CMX_EMPN=e.CMX_EMPN,m.APPR_OBJECT_NAME=e.APPR_OBJECT_NAME,m.FULL_PATH=e.FULL_PATH,m.LAST_UPDATE_TIMESTAMP=SYSDATE
WHEN NOT MATCHED THEN
INSERT
(m.COMPANY,m.SEQ,m.CMX_EMPN,m.APPR_OBJECT_NAME,m.FULL_PATH,m.CREATION_TIMESTAMP,m.LAST_UPDATE_TIMESTAMP)
VALUES (e.COMPANY,e.SEQ,e.CMX_EMPN,e.APPR_OBJECT_NAME,e.FULL_PATH,sysdate,sysdate) ;

 

다른 카테고리의 글 목록

Dev. 데이터베이스/SQL 예제 카테고리의 포스트를 톺아봅니다