Posts List

Translate

2014년 2월 3일 월요일

ORACLE MERGE INTO 문 한번에 INSERT , UPDATE 하기

MERGE INTO 타겟테이블 TT
    USING
        소스테이블 ST
    ON (TT.필드1=ST.필드1 AND TT.필드2=ST.필드2 ....)
   
    WHEN MATCHED THEN -- 존재하면 UPDATE
        UPDATE SET
            TT.타겟_필드1=ST.소스_필드1,
            TT.타겟_필드2=ST.소스_필드2

    WHEN NOT MATCHED THEN -- 없으면 INSERT
            INSERT (타겟_필드1, 타겟_필드2, 타겟_필드3....)
            VALUES(
                ST.소스_필드1,
                ST.소스_필드2,
                ST.소스_필드3,
                ,
                ,
            );

[실제 Example]
MERGE INTO ITA0010 T1
USING DUAL
ON (1=1
  AND T1.USER_ID = #{USER_ID}
  AND T1.YY = #{YY}
)
WHEN NOT MATCHED THEN
INSERT(
            T1.USER_ID,
            T1.YY,
            T1.CRE_ANUL_CNT,
            T1.REGR_ID,
            T1.MODR_ID,
            T1.REG_DT,
            T1.MOD_DT,
            T1.RMK
            )VALUES(
             #{USER_ID},
             #{YY},
             #{CRE_ANUL_CNT},
             #{user.USER_ID},
             #{user.USER_ID},
             SYSDATE,
             SYSDATE,
             #{RMK}
             )
WHEN MATCHED THEN
UPDATE SET
                    T1.CRE_ANUL_CNT = #{CRE_ANUL_CNT},
                    T1.MODR_ID = #{user.USER_ID},
                    T1.MOD_DT = SYSDATE,
                    T1.RMK = #{RMK}

댓글 없음 :

댓글 쓰기