ORACLE MERGE 구문 문의드립니다.. 0 2 4,481

by 리팩토리 [SQL Query] ORACLE MERGE SQL [2022.10.20 16:15:55]


안녕하세요 JAVA 개발자 입니다.

이해가 좀 안되는 부분이 있어 문의드립니다 ㅜㅜ

USING 절에 데이터 다른테이블 정보를 조회하여 ON절에 사용 하였는데 

No rows returned. 가 되었을때는 insert 로직을 타질 않습니다. 

하지만 DUAL 로 테스트 하면 정상 insert로직을 수행합니다. 두개의 차이가 있을까요?..

혹시 No rows returned. 가 되었을때 insert로직을 수행할수 있게 하는 방법이 있을까요?

SQL#1 SQL#2
MERGE INTO 테이블명 T
USING (
        SELECT B.SUBSR_PRDC_SEQ_NO
        FROM 테이블명 B
        WHERE 1=2
) S ON (
    T.SUBSR_PRDC_SEQ_NO = 2
)
WHEN MATCHED THEN
UPDATE SET UPDT_USER_ID = 'AGENT'
WHEN NOT MATCHED THEN
INSERT (
        SUBSR_PRDC_SEQ_NO
        )
VALUES (
        012457845
);

MERGE INTO 테이블명 T
USING (
        SELECT 1 AS TEST

FROM DUAL WHERE 1=2
) S ON (
    T.SUBSR_PRDC_SEQ_NO = 2
)
WHEN MATCHED THEN
UPDATE SET UPDT_USER_ID = 'AGENT'
WHEN NOT MATCHED THEN
INSERT (
    SUBSR_PRDC_SEQ_NO
        )
VALUES (
        012457845
);

 

by 마농 [2022.10.20 16:19:55]

USING 을 가지고 머지를 합니다.
USING 에 자료가 없으면 머지할게 없지요.
그리고 올려주신 SQL 은 두개 다 구문이 적절하지 않습니다.(편집 오류일 듯)


by 리팩토리 [2022.10.20 16:33:01]

기존에 정보가 있으면 update하고 없으면 insert 한다 의 생각이었는데

다른테이블과 조인하여 기존의 정보를 확인해야하는 상황입니다.

이렇게 되면 USING에 데이터가 없어서 ON절에 값이 NULL이 들어가는게 아니라 아예 수행 자체를 안해버리는 것이군요

감사합니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입