안녕하세요 오라클 12C 사용중입니다.
FUNCTION문을 작성 중인데요..
SELECT COUNT(CD_KEY) AS KEY_CNT
, LISTAGG (...ON OVERFLOW TRUNCATE '...') ... AS LIST
INTO v_keycnt, v_list
FROM ...
;
return v_keycnt || ';' || v_list;
다음과 같이 오버된문자에 대해 TRUNCATE를 했고, Count값과 List값을 구분자로 구분하여 합쳐서 리턴할시에..
리턴값은 뭐로 하고, 사이즈는 어떻게 줘야 할까요?
INTO 변수와 리턴값 및 사이즈를 현재는 VARCHAR2(4000) 으로 선언한 상태입니다..
도움 부탁드립니다..
4000 byte 의 문자에 카운트 및 구분자를 다시 연결하네요?
그러면 4000 byte 이상 오류 날 것으로 예상됩니다.
이를 방지하려면 listagg 의 결과를 다시 적당 크기로 잘라 써야 할 것입니다.
SUBSTRB(v_list, 1, 3990)
마농님 답글 감사드립니다..
그럼 TRUNCATE '...' 에서 처럼 점점점 표시를 하기 위해서는 사이즈를 구해서 다시 해줘야 겠군요?
답글 감사드립니다..
SUBSTR(V_LIST,1,4000-length(v_keycnt)) -- 이렇게 쓸수있지 않을까요?
우리집아찌님 답글 감사드립니다..^^