본문 바로가기

Oracle

merge




임의의 d1, d2 테이블 가정후 임의의 데이터 입력 후 
merge문 작성
d2 테이블에 d1테이블의 값을 들이 부우는 격..
따라서 d2의 deptno=2 값은 aa로 수정되고
d2의 deptno=1 값은 없으므로 입력됨...


ex>

MERGE INTO CODEBOOK A

USING DUAL

ON ( A.CODE_TYPE = NVL(?CODE_TYPE, '')

       AND CODE_ID = NVL(?CODE_ID, '') )

WHEN MATCHED THEN

UPDATE SET CODE_NAME = NVL(?CODE_NAME, '')

      , PARENT_TYPE = NVL(?PARENT_TYPE, '')

      , PARENT_ID = NVL(?PARENT_ID, '')

       , ETC1 = NVL(?ETC1, '')

     , ETC2 = NVL(?ETC2, '')

     , ETC3 = NVL(?ETC3, '')

     , SORT_KEY = NVL(?SORT_KEY, '')

     , USE_YN = NVL(?USE_YN, '')

     , UPD_USERID = NVL(?P_GU_ID, '')

     , UPD_DATETIME = SYSDATE

WHEN NOT MATCHED THEN

INSERT ( CODE_TYPE

         , CODE_ID

       , CODE_NAME

       , PARENT_TYPE

       , PARENT_ID

       , ETC1

       , ETC2

       , ETC3

       , SORT_KEY

       , USE_YN

       , REG_USERID

       , REG_DATETIME )

VALUES ( ?CODE_TYPE

         , ?CODE_ID

       , NVL(?CODE_NAME, '')

       , NVL(?PARENT_TYPE, '')

       , NVL(?PARENT_ID, '')

       , NVL(?ETC1, '')

       , NVL(?ETC2, '')

       , NVL(?ETC3, '')

       , NVL(?SORT_KEY, '')

       , NVL(?USE_YN, '')

       , NVL(?P_GU_ID, '')

       , SYSDATE )




'Oracle' 카테고리의 다른 글

여러테이블에 동시에 한테이블이 데이터를 입력  (0) 2013.11.20
index : 인덱스  (0) 2013.02.15
sequence : 시퀀스  (0) 2013.02.14
alter : 테이블 변경  (0) 2013.02.14
테이블 복제와 데이터 삽입  (0) 2013.02.13