728x90
MERGE INTO 테이블명
USING DUAL
ON
(
키속성1 = #{인자값}
, 키속성2 = #{인자값}
)
WHEN MATCHED THEN
UPDATE
SET 입력할속성값1 = #{인자값}
, 입력할속성값2 = #{인자값}
WHEN NOT MATCHED THEN
INSERT (
속성값1
, 속성값2
, ...
)
VALUES (
#{인자값}
, #{인자값}
, ...
)
Merge문으로 데이터베이스에 단말과의 현재 연결 상태를 업데이트 처리를 하거나
받은 데이터를 입력하는 부분이 있는데
통신으로 받은 데이터들을 DB에 입력하는 동작에서
try catch문으로 감싸서 동작시키는데도
아무런 반응이 없어서 SQL문을 살펴보았다.
위에서 잘못된점은 현재 Using DUAL on ~뒤에 오는 키값에서 조건문이 아닌 반점을 이용해서
sql문자체에서 오류가 났다.
문제는 이 오류가 try catch문으로 감싸도 오류문으로 표출되지 않았다는게 문제다.
직접 사용하려던 SQL문을 DB에 쿼리함으로써 무슨 오류가 발생했는지 알 수 있게 됐었다.
어째서 직접 SQL문을 쿼리하지 않는 한
오류가 표출되지 않는지 이유는 모르겠지만
위의 SQL문을 정상적으로 수정하면 아래와 같다.
키속성을 , 반점이 아닌 AND로 묶어줬다.
MERGE INTO 테이블명
USING DUAL
ON
(
키속성1 = #{인자값}
AND 키속성2 = #{인자값}
)
WHEN MATCHED THEN
UPDATE
SET 입력할속성값1 = #{인자값}
, 입력할속성값2 = #{인자값}
WHEN NOT MATCHED THEN
INSERT (
속성값1
, 속성값2
, ...
)
VALUES (
#{인자값}
, #{인자값}
, ...
)
728x90
'SQL > Oracle' 카테고리의 다른 글
[Database/Oracle]오라클 테이블 스페이스 추가하기 (0) | 2022.03.04 |
---|---|
통계 데이터 생성 오류 잦은 이유 (0) | 2021.12.29 |
[Oracle] 오라클 시간더하기, 테스트용 데이터 만들기 (1) | 2021.11.12 |
만능인줄 알았던 오라클(잘되던 insert select 안될때) (0) | 2021.08.03 |
오라클 상위 몇개 가져오기 (0) | 2021.05.18 |
댓글