본문 바로가기
DEV_STUDY/WEB_DEV

오라클 Mybatis | ORA-00926 Missing Values keyword에러 해결

by 도태된닝겐 2025. 2. 22.
반응형

스케줄링 쿼리 쓰다가 키워드를 중복 체크 하지않아

계속 DB에 데이터가 쌓이고 있어서

Merge into 구문 Merge into ~insert()values();

로 쿼리 작성했는데

 자꾸 ORA-00926 누락된  Values 키워드 오류 떠서.. 실패...구문 오류는 없는데

뭐지 확인했더니 데이터 없어서....ㅋㅋㅋㅋㅋ실수다

 

MERGE INTO TABLE A
USING
(
SELECT
'1500' AS VKBUR,
'151' AS VKGRP ,
'15101' AS BZIRK_AUFT,
'D110' AS WERKS,
'7100' AS LGORT
FROM DUAL) B
ON (A.VKBUR = B.VKBUR
AND A.VKGRP = B.VKGRP
AND A.BZIRK_AUFT = B.BZIRK_AUFT
AND A.WERKS=B.WERKS
AND A.LGORT=B.LGORT)
WHEN NOT MATCHED THEN INSERT TABLE
( VKBUR,
VKGRP,
BZIRK_AUFT,
WERKS,
LGORT,
USE_YN )
VALUES
( '1500',
'151',
'15101',
'D110',
'7100',
'1' )

쿼리에서 오류는 없으나 데이터가 없으니 null상태에서 

어떤값이랑 비교 할 수 없으니 당연히 오류 발생

쿼리 수정 

-- 데이터 존재 여부 확인 후 INSERT 수행
INSERT INTO TABLE(VKBUR, VKGRP, BZIRK_AUFT, WERKS, LGORT, USE_YN)
SELECT '1400', '143', '14303', 'G220', 'D258', '1'
FROM DUAL
WHERE NOT EXISTS
(
SELECT 1 FROM TABLE
WHERE
VKBUR = '1400'
AND VKGRP = '143'
AND BZIRK_AUFT = '14303'
AND WERKS = 'G220'
AND LGORT = 'D258'
);

즉,

데이터 존재 확인 후 비교 후 insert 넣거나, update, delete하도록

쿼리 짜면 된다..

진짜..아마추어같은 실수함..;;

반응형