저장 프로시저에 서브쿼리로 구현중인 코드가 저번주 금욜부터 오류가 발생하네요.
데이터 정합성을 통해 문제가 있는지 확인해봤으나, ch_name, cd_name에 null이 있거나 컬럼 크기가 문제가 있지는 않았습니다.
1. ORA-19011 : 데이터 버퍼가 작다는 오류가 발생하여 getCLOBval()을 추가했습니다.
2. 데이터 버퍼가 작다는 오류는 사라졌지만,
ORA-24347 함수합계에 NULL 경고가 있다는 오류가 발생했습니다.
3. 해당 MAX함수를 NVL(MAX(b.CH_NAME,''), MAX(NVL(b.ch_name,'') 동일 현상이 발생했습니다.
4. 행열 전환 함수 XMLAGG와 MAX함수간의 문제로 보이는데 해결 방안을 여쭙고 싶습니다.
SELECT a.CODE CODE
,Max(b.NAME) NAME
,SubStr(SUBSTR(XMLAGG(XMLELEMENT(X,'/',a.NAME) ORDER BY a.NAME).EXTRACT('//text()').getCLOBval(),2),1,200) NAME
FROM SETCODEd a
SETCODEh b
WHERE a.CODE = b.CODE (+)
GROUP BY a.CODE ;
SELECT a.code , b.name b_name , SUBSTR(a.name, 1, 200) a_name FROM (SELECT code , LISTAGG(name, '/') WITHIN GROUP(ORDER BY name) name FROM (-- 중복 제거 및 누적 길이 측정 -- SELECT code, name , SUM(LENGTH(name)) OVER(PARTITION BY code ORDER BY name) v FROM setcoded WHERE name IS NOT NULL GROUP BY code, name ) WHERE v - LENGTH(name) < 200 -- 이전까지 누적길이 200 미만인 것만 추출 GROUP BY code ) a , setcodeh b WHERE a.code = b.code(+) ;