USING 절에 dual 대신 SELECT 절을 넣는 방법이 있습니다만.
다만 올려주신 쿼리는 이상합니다.
btable 을 Select 하는 것이 불필요해 보이네요.
-- 1. Using 절에서 Select 하기. 단, btable 필요 없음. MERGE INTO atable a USING (SELECT ASeq.NEXTVAL seq , #{NAME} name , #{id} id , #{password} password , TO_CHAR(sysdate, 'yyyymmddhh24miss') day FROM dual ) b ON (a.seq = b.seq) WHEN MATCHED THEN UPDATE SET name = b.name , day = b.day WHEN NOT MATCHED THEN INSERT ( seq, name, id, password, day) VALUES (b.seq, b.name, b.id, b.password, b.day) ;
-- 2. Select 필요 없음. MERGE INTO atable USING dual ON (seq = #{Seq}) WHEN MATCHED THEN UPDATE SET name = #{NAME} , day = TO_CHAR(sysdate, 'yyyymmddhh24miss') WHEN NOT MATCHED THEN INSERT ( seq, name, id, password, day ) VALUES ( ASeq.NEXTVAL , #{NAME}, #{id}, #{password} , TO_CHAR(sysdate, 'yyyymmddhh24miss') ) ;