Oracle MERGE INTO (Upsert) 구문

2013. 10. 31. 17:43Database/ORACLE



반응형

oracle merge into 성능 알아보자 . 

Oracle 9 버전 이상에서 가능합니다.


IF 문이라고 생각하면된다.(기존 ex : IF 뭐뭐 =  true  THEN    ELSE  END IF;) 

true 이면  Update set  , false 일 경우 Insert into 가 실행이 된다.

이건 머지 하는분들은 ? 밑에껄 보고 MERGE INTO 에 대한 구문을 참고 바란다. ㅋ

그리고 주의할점 WHEN MATCHED THEN 부분에서 UPDATE SET 까지만 써줘야함 테이블명까지쓰면 안됨

INSERT도  INSERT 만 써줘야한다 간혹 INTO 까지 쓰면 안됨 

밑에 예제를 참고하세요~



MERGE INTO 테이블이름
USING 대상테이블 // 같은 테이블이면 DUAL 이라 써준다
ON 조건(조인조건)
WHEN MATCHED THEN
 UPDATE SET
                 column1=값1     
                 column2=값2     
                 column3=값3

WHEN NOT MATCHED THEN
      INSERT (column1, column2, column3)
    VALUES (값1,값2,값3)


/*****************EX***************************/


MERGE INTO 학생 TT
USING 과목 ST
ON 조건(TT.일련번호 = TT.일련번호 AND ...........)
WHEN MATCHED THEN
 UPDATE SET
                 column1=값1     
                 column2=값2     
                 column3=값3

WHEN NOT MATCHED THEN
      INSERT (column1, column2, column3)
    VALUES (값1,값2,값3)


/*****************EX***************************/

SELECT COUNT(1) INTO TMP_CNT FROM 학생 WHERE 학생일련번호= '1111';

MERGE INTO 학생 
USING DUAL  // 같은 테이블일경우
ON 조건(TMP_CNT = '1')
WHEN MATCHED THEN
 UPDATE SET
                 column1=값1     
                 column2=값2     
                 column3=값3

WHEN NOT MATCHED THEN
      INSERT (column1, column2, column3)
    VALUES (값1,값2,값3)


반응형

'Database > ORACLE' 카테고리의 다른 글

[오라클]Oracle Function  (0) 2014.01.21
oracle start with connect by prior  (1) 2014.01.09
[Oracle TRIGGER]오라클 트리거  (0) 2013.10.10
오라클 소수점  (0) 2013.03.14
Oracle 내장함수  (0) 2013.02.08