* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
Linux 64bit 등 | |
[cubrid_rel] 9.2 | |
[도움말]-[버전정보] 확인 | |
java |
* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
에러 내용 및 재현 방법 | 재현 가능한 Source와 SQL |
관련 테이블(인덱스, 키정보 포함) 정보 | CUBRID 홈 디렉토리 아래 log 디렉토리 압축 |
-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
안녕하세요.
MERGE INTO문에 관해 문의드립니다.
MERGE INTO TABLE A USING(SELECT ? END_DATE, ? END_HOURLY, ? COUNT) b
ON(a.END_DATE = b.END_DATE AND a.END_HOURLY = b.END_HOURLY)
WHEN MATCHED THEN
...
WHEN NOT MATCHED THEN
...
상기와 같은 쿼리를 prepare할려고 하는데 다음과 같이 에러가 납니다.
Semantic: before ' AND a.END_HOURLY = b.END_HOURLY AND a.DNIS = b.DNIS AND a.Q...'
'=' requires arguments with compatible collations. merge
바인딩 값에 직접 데이터를 입력하고 진행하면 -494가 뜹니다.
확인부탁드립니다.
아 또하나가 바인딩할때 네이밍은 안되나요? ? 아니라 :BIND_NAME 이렇게...
수고하세요.
바인딩시 문자가 아닌 숫자로 실행하면 되는데.. 문제가 먼가요?
====================================성공 케이스========================================
MERGE INTO RE_DNIS_H a USING (SELECT 20180101 END_DATE, 0 END_HOURLY , 1 DNIS, 1 QUEUE_ID, 1 CENTER_ID, 1 MEDIA_ID, 1 CALL_KIND) b
ON (a.END_DATE = b.END_DATE AND a.END_HOURLY=b.END_HOURLY AND a.DNIS=b.DNIS AND a.QUEUE_ID=b.QUEUE_ID AND a.CENTER_ID=b.CENTER_ID AND a.MEDIA_ID=b.MEDIA_ID AND a.CALL_KIND=b.CALL_KIND)
WHEN MATCHED THEN UPDATE SET a.ALLENTER_COUNT = NVL(a.ALLENTER_COUNT, 0) + 1
WHEN NOT MATCHED THEN INSERT (END_DATE, END_HOURLY , DNIS, QUEUE_ID, CENTER_ID, MEDIA_ID, CALL_KIND) VALUES (b.END_DATE, b.END_HOURLY , b.DNIS, b.QUEUE_ID, b.CENTER_ID, b.MEDIA_ID, b.CALL_KIND)
====================================실패 케이스========================================
MERGE INTO RE_DNIS_H a USING (SELECT '20180101' END_DATE, '00' END_HOURLY , 1 DNIS, 1 QUEUE_ID, 1 CENTER_ID, 1 MEDIA_ID, 1 CALL_KIND) b
ON (a.END_DATE = b.END_DATE AND a.END_HOURLY=b.END_HOURLY AND a.DNIS=b.DNIS AND a.QUEUE_ID=b.QUEUE_ID AND a.CENTER_ID=b.CENTER_ID AND a.MEDIA_ID=b.MEDIA_ID AND a.CALL_KIND=b.CALL_KIND)
WHEN MATCHED THEN UPDATE SET a.ALLENTER_COUNT = NVL(a.ALLENTER_COUNT, 0) + 1
WHEN NOT MATCHED THEN INSERT (END_DATE, END_HOURLY , DNIS, QUEUE_ID, CENTER_ID, MEDIA_ID, CALL_KIND) VALUES (b.END_DATE, b.END_HOURLY , b.DNIS, b.QUEUE_ID, b.CENTER_ID, b.MEDIA_ID, b.CALL_KIND)