2.IT/DB,ORACLE

[SQL] MERGE문 (한번에 INSERT, UPDATE)

꿍스뿡이 2018. 10. 24. 00:00


MERGE문 (데이터수정, 추가)

 

안녕하세요.

직장에서 벗어나 자신의 삶을 살아갈 수 있도록 도와주는 드림빌더 꿍스뿡이 입니다.


개발할때 사용하기 편하도록 MERGE문 코드를 만들어 놨으니 복사해서 편하게 사용하세요~!


참고 : 해당 포스팅은 개발자분들이 빠르게 복사하여 사용하기 위한 목적으로 만들었습니다.

별도의 상세한 설명은 작성하지 않았습니다. 따라서 상세한 설명을 원하실 경우에는 댓글을 달아주시면

해당 포스팅의 내용을 보충하도록 하겠습니다. 


(본 예제의 테이블명은 TMP_TABLE이 기준 테이블이며 동일한 구조의 TMP_TABLE2가 있다는 전재임)

 

CREATE TABLE TMP_TABLE (
 CODE_NO    VARCHAR2(20 BYTE) NOT NULL,
 CODE_NM    VARCHAR2(20 BYTE) NULL,
 AMT        NUMBER(16)        NULL,
 YN_FLAG    CHAR(1 BYTE)      NULL,
 DATE_VALUE DATE              NULL
);

[테이블 구조]



MERGE INTO TMP_TABLE
      USING DUAL
      ON (CODE_NO = '2000')
      WHEN MATCHED THEN
      UPDATE SET
          CODE_NM = '코드명',
          AMT = 50000,
          YN_FLAG = 'Y',
          DATE_VALUE = SYSDATE
      WHEN NOT MATCHED THEN 
          INSERT (
                  CODE_NO,
                  CODE_NM,
                  AMT,
                  YN_FLAG,
                  DATE_VALUE
         )VALUES(
                 '2000',
                 '코드명',
                 50000,
                 'Y',
                 SYSDATE)

[MERGE문 샘플(동일테이블)]


MERGE INTO TMP_TABLE A
      USING TMP_TABLE2 B
      ON (A.CODE_NO = '2000')
      WHEN MATCHED THEN
      UPDATE SET
          A.CODE_NM = B.CODE_NM,
          A.AMT = B.AMT,
          A.YN_FLAG = B.YN_FLAG,
          A.DATE_VALUE = B.DATE_VALUE
      WHEN NOT MATCHED THEN 
          INSERT (
                  CODE_NO,
                  CODE_NM,
                  AMT,
                  YN_FLAG,
                  DATE_VALUE
         )VALUES(
                 '2000',
                 '코드명',
                 50000,
                 'Y',
                 SYSDATE)

[MERGE문 샘플(다른테이블)]



 

 

내용이 도움이 되셨거나 초보 블로거를 응원하고 싶은신 분은 공감버튼을

내용의 수정이 있거나 도움이 필요하신 분은 댓글을 남겨주세요~