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에 직접 조건 값을 입력해준다.
 
○출처ㅣm.blog.naver.com/PostList.nhn?blogId=bluefish115