상세 컨텐츠

본문 제목

Oracle 에서 Merge 구문 사용

DataBase/Oracle

by 탑~! 2012. 5. 16. 16:52

본문

 

MERGE INTO target_table_name
      USING (table|view|subquery) ON (join condition)
WHEN MATCHED THEN
     UPDATE SET col1 = val1[, col2 = val2…]
WHEN NOT MATCHED THEN
     INSERT(...) VALUES(...)
 

 ◈ syntax 설명
 - INTO : DATA가 UPDATE되거나 INSERT될 TABLE이름을 지정 합니다.

 - USING : 대상 TABLE의 DATA와 비교한 후 UPDATE 또는 INSERT할 대상이 되는 DATA의 SOURCE 테이블 또는 뷰를 지정
 - ON  : UPDATE나 INSERT를 하게 될 조건으로, 해당 condition을 만족하는 DATA가 있으면 WHEN MATCHED 절을 실행하게 되고, 없으면 WHEN NOT MATCHED 이하를 실행하게 됩니다.

 - WHEN MATCHED : ON 조건절이 TRUE인 ROW에 수행 할 내용

 - WHEN NOT MATCHED
: ON 조건절에 맞는 ROW가 없을 때 수행할 내용 
 

SQL>MERGE INTO emp_test et
    USING emp e
    ON(et.empno = e.empno)
 WHEN MATCHED THEN
    UPDATE SET et.sal = e.sal*1.1
 WHEN NOT MATCHED THEN
    INSERT VALUES (e.empno,e.ename,e.job,e.mgr,e.hiredate,e.sal,e.comm,e.deptno)

 

 

 

MERGE INTO  AAAAA A
USING(SELECT EMP_NO, AUTH_CD
      FROM  BBBBB 
      WHERE EMP_NO = p_emp_no
      AND AUTH_CD = p_auth_cd) B
ON (A.EMP_NO = B.EMP_NO AND A.AUTH_CD = B.AUTH_CD)
WHEN MATCHED THEN
      UPDATE
      SET  A.REG_DATE = SYSDATE
           , A.REG_EMP_NO = p_reg_emp_no
WHEN NOT MATCHED THEN
      INSERT (A.EMP_NO, A.AUTH_CD, A.MNGER_YN, A.REG_DATE, A.REG_EMP_NO)
      VALUES (p_emp_no, p_auth_cd, 'N',SYSDATE,p_reg_emp_no);

 

 

 

 

출처 : http://blog.naver.com/pluggers?Redirect=Log&logNo=150014343586

 

관련글 더보기