본문 바로가기

Database

[ORACLE] LISTAGG가 오라클 버전 문제로 에러날 때 -> WM_CONCAT 이용하자

회사에서 운영서버에 반영하려는데, 아무생각없이 써놨던 LISTAGG 절들이 하나도 안 통했다.

알아보니 운영서버의 오라클 버전은 10g 였고 내가 작업하던 개발서버의 오라클 버전은 11g 였는데,

10g 에서는 LISTAGG 가 먹지 않는다고 한다.

 

대체제로 10g 에서는 WM_CONCAT 을 이용한다.

 

DT 컬럼을 WM_CONCAT 으로 뽑아내보자

SELECT WM_CONCAT (DT) FROM TEST_TABLE

 

만약 DT 컬럼이  CLOB 타입일 정도로 용량이 크다면, DBMS_LOB.SUBSTR( 컬럼명 , 1000 ) 을 이용하자.

1000은 1000자를 뜻하고 더 늘려도 된다.

SELECT DBMS_LOB.SUBSTR (WM_CONCAT (DT), 1000) FROM TEST_TABLE

 

 

참고로 LOB은 'Large Object' 의 약자로 오라클에서 제공하는 대용량 데이터 타입이다.

LOB 타입에는 BLOB, CLOB, NCLOB, BFILE 타입이 있다.

DBMS_LOB  패키지는 이러한 LOB 타입을 처리하는 패키지이다.