다중 row를 concat하는 함수를 생성 후, 해당 함수를 호출하여 조회시 899 오류 발생

by js posted Nov 19, 2015

* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
OS
Linux 64bit
CUBRID Ver.
9.2.14.0004
CUBRID TOOL Ver.
CUBRIDManager-9.3.1.703-windows-i386.exe
응용 환경(API)
java procedure 관련

* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
에러 내용 및 재현 방법 재현 가능한 Source와 SQL
관련 테이블(인덱스, 키정보 포함) 정보 CUBRID 홈 디렉토리 아래 log 디렉토리 압축


-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------

ㅁ 개요

  - 오라클의 wm_concat과 유사한 기능이 필요하여 java 클래스를 등록하여 함수를 생성하여 적용하였고,

 

    해당 , 데이터를 조회하는 과정에서 결과 값이 큰 경우(=ROW가 많은 경우),

 

    데이터가 정상적으로 조회되기도, 오류가 발생하기도 합니다.

    

    ※ 외부망이 안 되는 곳이라, 적어온 정보만으로 문의를 작성하는 상황인지라

        로그 등의 첨부파일을 첨부하지 못하는 점 양해 부탁드립니다.

 


1) 에러 내용 및 재현 방법

 - 함수는 다음 URL을 참고하여 생성하였습니다 (수행 로직 동일)

   http://www.cubrid.com/zbxe/48099

 

2) 재현가능 SQL


  - 다음과 같이 쿼리를 하였을 때, 조회되는 단일헹의 길이에 


  따라, 에러가 발생하는 경우도, 잘 되는 경우도 있습니다.


  ㅡ select concatmultirow_withdelimeter( list 


            ( selec rcv_id from tb 


              where email_sn = '259480'


            ), '|' )     


-> 이메일을 수신한 아이디를 파이프로 이어 붙이는 기능인데요,

주로, 단일행의 길이가 긴 경우에 문제가 발생하는 느낌입니다. (계속 조회해보면 10번은 에러가 나다, 1번은 결과가 나오다.. 그러는 상황)

예를들어, 컨캣된 결과가 56359바이트인 경우 해당 문제가 발생하며, 84바이트인 경우는 문제 없이 잘 되는 듯 합니다.

에러 내용은 다음과 같습니다.

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

실행오류 : -889

stored procedure execute error: java.lang.nullpointerexception

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

위 에러가 발생 가능한 예상 원인에는 무엇이 있으며, 조치 방법은 무엇인지에 대해 답변 부탁드리겠습니다.


ㅡ 현재 프로젝트 일정이 여유가 많지 않은데 가급적 빠른 답변 해주셨으면 대단히 감사하겠습니다..


감사합니다.

 


Articles

83 84 85 86 87 88 89 90 91 92