728x90
반응형
보통 수정기능이 있는 화면을 구현하다 보면 신규는 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 할 값들)          

 
728x90
반응형
블로그 이미지

nineDeveloper

안녕하세요 현직 개발자 입니다 ~ 빠르게 변화하는 세상에 뒤쳐지지 않도록 우리모두 열심히 공부합시다 ~! 개발공부는 넘나 재미있는 것~!

,