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
Lock 걸린 Table 알아내기 (0) | 2012.05.16 |
---|---|
DUMMY 테이블을 활용한 데이타 조회 (0) | 2012.05.16 |
숫자값에 콤마를 표기할때 (0) | 2012.05.16 |
여러 열의 Data 한열로 합치기 (0) | 2012.05.16 |
특정 테이블 스키마 보기 (0) | 2012.05.16 |