Window7 32bit, | |
CUBRID 9.2 <9.2.2.0155> | |
CUBRID 매니저 2014.01 빌드 0377 (32bit) | |
VB 6.0 |
* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
에러 내용 및 재현 방법 | 재현 가능한 Source와 SQL |
관련 테이블(인덱스, 키정보 포함) 정보 | CUBRID 홈 디렉토리 아래 log 디렉토리 압축 |
-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
안녕하세요. 오늘도 이렇게 도움을 요청하게 되네요
지난번 에도 비슷한 문제로 문의를 드리다 필수적인 요소는 아니어서 그냥 지나갔던 내용인데요.
개발 환경은 VB 6.0 을 사용하고 있습니다. Connection 관련 내용입니다.
Provider = CUBRIDProvider.1
CursorLocation = adUseClient
Charset = EUC-KR
파라미터로 넘겨주는 값은 위의 값입니다. 나머지는 Data Source, User ID, Password, Location 이고요
문제가 발생하는 상황은 아래와 같습니다.
1개 테이블 을 Select 하는 쿼리를 주고 조회를 하고 전체 레코드를 카운트하는 RecordCount 명령이나 MoveFirst, Movenext 명령을 했을때 다음과 같은 오류가 발생합니다.
=========================================================
Run-time error '-2147467259(80004005)'
데이터 공급자나 기타 서비스가 E-FAIL 상태를 반환했습니다.
=========================================================
사용한 쿼리는 아래와 같습니다.
SELECT
BID AS "BIMS ID",
PID AS "등록번호",
pnm AS "성명",
birthday AS "생년월일",
sex AS "성별",
SUBSTR(POSTCD, 1, 3)|| '-' || SUBSTR(POSTCD, 4, 3)AS "우편번호",
addr1 AS "주소1",
addr2 AS "주소2",
telephone AS "전화번호",
cellphone AS "휴대전화",
remark AS "비고"
FROM
Tbcom_Patientinfo
ORDER BY Credt, Cretm, BID
총 레코드 수 는 25000건 정도 됩니다. BID, PID 를 제외한 모든 항목은 Null 값이 있을 수 있습니다.
어떤 부분을 점검해봐야 할까요?
자동 커밋 설정은 꺼져있습니다.
테스트 후 추가로 발견한 내용입니다.
SUBSTR(POSTCD, 1, 3)|| '-' || SUBSTR(POSTCD, 4, 3)AS "우편번호",
을 POSTCD AS "우편번호", 로 바꿔서 쿼리 해보니 정상적으로 동작하네요.
substr() 같은 함수 사용시 레코드셋 컨트롤에 문제가 있을 수 있나요?
===============================================================
추가로 더 확인 된 내용입니다.
위에 말씀 드렸던 SUBSTR() 함수 사용 자체가 아니라 SUBSTR() 이든 서브 쿼리를 사용 하던지
레코드를 그대로 가져오는 방법 이외에 별도의 편집을 했을 때 (NULL) 값이 나오면 위와 같은 문제가 발생 하는 것 같습니다.
혹시 DB 옵션에서 NULL 값에 대한 처리를 하는 설정값이 있는지요?
안녕하세요.
말씀해 주신 부분에서 NULL 값이 들어오면서 오류가 발생하는 것으로 보입니다.
아래와 같이 변경하여 확인 부탁 드립니다.
NVL(SUBSTR(POSTCD, 1, 3), '')|| '-' || NVL(SUBSTR(POSTCD, 4, 3), '') AS "우편번호",