SQL/ORACLE함수
MERGE INTO문 INSERT와 UPDATE를 하나의 쿼리로
nineDeveloper
2014. 6. 11. 15:25
보통 수정기능이 있는 화면을 구현하다 보면 신규는 INSERT 수정은 UPDATE문을 사용해야 한다.
또 ROW가 있는지 없는지 확인 하는 SELECT 쿼리까지 필요하죠
MERGE INTO문을 사용하면 하나의 쿼리로 가능합니다.
1. 예문
MERGE INTO TB_TBL AA USING(SELECT :v_USER_ID AS USER_ID , :v_KEY_COL1 AS KEY_COL1 FROM DUAL )BB ON(AA.KEY_COL1 = BB.KEY_COL1) WHEN MATCHED THEN UPDATE SET KEY_COL1 = BB.KEY_COL1 ,MODIFIER = BB.USER_ID ,MOD_DDTT = sysdate WHEN NOT MATCHED THEN INSERT ( MODIFIER,MOD_DDTT,REGISTER,REG_DDTT,KEY_COL1 ) VALUES ( BB.MODIFIER,BB.MOD_DDTT,BB.USER_ID,sysdate,BB.KEY_COL1 ) |
2. 구문
MERGE INTO 테이블명
USING(
서브쿼리 : 서브퀄 결과가 NULL이면 에러가 발생합니다. 그래서 저는 요기에 파라미터 값을 받습니다.
)BB ON(AA.KEY_COL1 = BB.KEY_COL1) -- 키값이 테이블에 있는지 비교합니다.
WHEN MATCHED THEN -- 테이블에 이미 키 값이 있다면 업데이트를 해야겠죠. 업데이트 구문을 실행합니다. UPDATE SET KEY_COL1 = BB.KEY_COL1 -- 업데이트 할 컬럼을 지정합니다. WHEN NOT MATCHED THEN -- 테이블에 키 값이 없을때 INSERT를 합니다. 아래의 INSERT 구문을 실행합니다. INSERT (컬럼들.....)
VALUES (INSERT 할 값들)
|