본문 바로가기
SQL/Oracle

[Oracle/Tibero] merge insert 누락된 우괄호

by Pendine 2021. 6. 2.
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

댓글