LISTAGG ...OVERFLOW TRUNCATE 시 리턴사이즈 문의드립니다. 0 4 7,266

by 동동동 [PL/SQL] Oracle 쿼리 [2022.12.26 16:36:09]


안녕하세요 오라클 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) 으로 선언한 상태입니다..

 

도움 부탁드립니다..

 

by 마농 [2022.12.26 17:29:38]

4000 byte 의 문자에 카운트 및 구분자를 다시 연결하네요?
그러면 4000 byte 이상 오류 날 것으로 예상됩니다.
이를 방지하려면 listagg 의 결과를 다시 적당 크기로 잘라 써야 할 것입니다.
SUBSTRB(v_list, 1, 3990)


by 동동동 [2022.12.26 17:33:41]

마농님 답글 감사드립니다..

그럼 TRUNCATE '...' 에서 처럼 점점점 표시를 하기 위해서는 사이즈를 구해서 다시 해줘야 겠군요?

 

답글 감사드립니다..

 


by 우리집아찌 [2022.12.26 18:09:16]

SUBSTR(V_LIST,1,4000-length(v_keycnt)) -- 이렇게 쓸수있지 않을까요?


by 동동동 [2022.12.26 18:12:31]

우리집아찌님 답글 감사드립니다..^^

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입