Buscamos por diferentes espacios para así brindarte la solución a tu inquietud, en caso de preguntas puedes dejar tu duda y contestaremos porque estamos para servirte.
Solución:
SELECT RTRIM(XMLAGG(XMLELEMENT(E,colname,',').EXTRACT('//text()') ORDER BY colname).GetClobVal(),',') AS LIST
FROM tablename;
Esto devolverá un valor clob, por lo que no hay límite en las filas.
Dado que los agregados string puede tener más de 4000 bytes, no puede usar el LISTAGG
función. Potencialmente, podría crear una función agregada definida por el usuario que devuelva un CLOB
preferible a VARCHAR2
. Hay un ejemplo de un agregado definido por el usuario que devuelve un CLOB
en la discusión original de askTom a la que Tim se vincula desde esa primera discusión.
listagg
fue cubierto recientemente por el estándar ISO SQL (SQL: 2016). Como parte de eso, también obtuvo un on overflow
cláusula, que es compatible con Oracle 12cR2.
LISTAGG(, ON OVERFLOW …)
los on overflow
cláusula apoya un truncate
opción (como alternativa a la predeterminada on overflow error
comportamiento).
ON OVERFLOW TRUNCATE [] WITH[OUT] COUNT
El valor predeterminado opcional es de tres puntos (…) y se agregará como último elemento si se produce un truncamiento.
Si se especifica with count y ocurre un truncamiento, el número de valores omitidos se pone entre paréntesis y se agrega al resultado.
Más sobre listagg
‘s on overflow
cláusula: http://modern-sql.com/feature/listagg