Saltar al contenido

Función LISTAGG: “resultado de string la concatenación es demasiado larga”

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

Valoraciones y comentarios

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *