Background Image

FORUM

2018.03.13 11:35

MERGE INTO문 관련.

조회 수 550 추천 수 0 댓글 3
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
OS
Linux 64bit 등
CUBRID Ver.
[cubrid_rel] 9.2
CUBRID TOOL Ver.
[도움말]-[버전정보] 확인
응용 환경(API)
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 이렇게...

수고하세요.

  • ?
    고늬 2018.03.16 16:34
    아직 확인이 안되었나요? 참고로 END_DATE, END_HOURLY는 CHAR 고 COUNT는 NUMERIC입니다.
    바인딩시 문자가 아닌 숫자로 실행하면 되는데.. 문제가 먼가요?

    ====================================성공 케이스========================================
    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)
  • ?
    권호일 2018.03.16 17:22
    ○ 내부 테스트 절차

    # 테이블 생성

    CREATE TABLE temp_case_1 (END_DATE VARCHAR(20) , END_HOURLY VARCHAR(20) , DNIS INTEGER, ALLENTER_COUNT INTEGER, QUEUE_ID INTEGER , CENTER_ID INTEGER, MEDIA_ID INTEGER, CALL_KIND INTEGER ) ;
    CREATE TABLE temp_case_2 (END_DATE INTEGER , END_HOURLY INTEGER , DNIS INTEGER, ALLENTER_COUNT INTEGER, QUEUE_ID INTEGER , CENTER_ID INTEGER, MEDIA_ID INTEGER, CALL_KIND INTEGER ) ;


    # 테스트 쿼리 1
    MERGE INTO temp_case_1 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)


    # 테스트 쿼리 2

    MERGE INTO temp_case_2 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)


    보내주신 쿼리를 참조하여 위와 같이 테스트 해 보았습니다.

    모두 정상적으로 실행 되었습니다.

    정확한 확인을 위해서는 $CUBRID/log 디렉토리 파일을 첨부 해 주시면 확인 하겠습니다.

  • ?
    고늬 2018.03.16 18:02
    확인해보니 캐릭터셋이 다르네요. 감사합니다.

  1. cubrid service 기동시 에러

  2. 숫자 컬럼 검색 문의드립니다.

  3. SELECT FETCH 문제

  4. 큐브리드 에러 해결방법 문의드립니다

  5. 큐브리드관련 질문드립니다.

  6. DELETE 구문시 에러

  7. MERGE INTO문 관련.

  8. 2783 게시글 이어서 질문입니다.

  9. 안녕하세요 CentOS repository cubrid에러 질문입니다.

  10. cubrid 백업 및 복원관련

  11. 큐브리드 매니저 osx 문의

  12. CUBRID 옵티마이저는 Index Condition Pushdown = ICP 기능을 제공하나요??

  13. cubrid 설치 쉘스크립트 실행 시 오류

  14. 큐브리드 10점대로 구축된 사이트가 있나요?

  15. cubrid 매니저에서 엑셀로 내보내기 했을때 문제 문의

  16. 브로커기능이 궁금합니다.?

  17. 컬럼 COMMENT 추가할 수 있는 방법이 있을까요

  18. Cannot coerce value of domain character to domain " 에러 관련 문의

  19. 안녕하세요. 레코드 접근시 accessor is invalid 라는 에러가 뜹니다. 도와주세요ㅠ

  20. Linux에 설치된 Cubrid 매니저 접속 속도 문제

Board Pagination Prev 1 ... 135 136 137 138 139 140 141 142 143 144 ... 156 Next
/ 156

Contact Cubrid

대표전화 070-4077-2110 / 기술문의 070-4077-2147 / 영업문의 070-4077-2112 / Email. contact_at_cubrid.com
Contact Sales