MERGE INTO 등록할_테이블_명 TB_NM
USING(SELECT USER_NO FROM USER_TABLE WHERE USER_NO = '001') U_TB --> 검색할 쿼리
ON (TB_NM.USER_NO = U_TB.USER_NO) --> INSERT, UPDATE 조건
WHEN MATCHED THEN -- 조건에 일치할경우 이하의 쿼리 실행 (UPDATE)
UPDATE
SET TB_NM.USER_NO = '001',
TB_NM.USER_NAME = '유저명'
WHEN NOT MATCHED THEN --> 조건이 일치하지 않을경우 이하의 쿼리 실행 (INSERT)
INSERT (TB_NM.USER_NO, TB_NM.USER_NAME)
VALUES ('001', '유저명')
만약 한개의 테이블에서 검색/입력/수정을 할 경우에는 DUAL을 사용하는 편이 낫다.
============================ 이하 예시 ============================
MERGE INTO USER_TABLE A
USING DUAL
ON (A.USER_NO = '10')
WHEN MATCHED THEN
UPDATE SET
DEPT_NO = '30'
WHEN NOT MATCHED THEN
INSERT (USER_NO, USER_NM, DEPT_NO)
VALUES('10', '유저명', '30')
1. 위의 query는 정상인데 ORA-00900 : SQL문이 부적합니다. 라는 오류가 발생한다면
JAVA에서 dataAccesser.update 를 사용한게 아니라 dataAccesser.query 를 사용했기 때문.
2. 한개의 테이블에서 검색/입력/수정할 경우에는 USING DUAL 을 사용, ON에 직접 조건 값을 입력해준다.
'Database' 카테고리의 다른 글
INSTR 사용? 이거 하나만 보면 쉽게 이해 (0) | 2022.11.14 |
---|---|
Oracle - LIKE 구문에 글자수 제한 (0) | 2022.07.13 |
[간단] 오라클 INSTR 을 알아보자 (0) | 2020.09.22 |
[초간단] 오라클 랜덤 키생성 방법 2가지 FUNCTION(함수) (1) | 2020.08.12 |
오라클 랜덤 키 생성 JAVA내장 함수 RAMDOMUUID() 이용하여 만들기 (0) | 2020.08.12 |