Comme de.hh.holger l'a déjà souligné, le LISTAGG AVEC CLOB ? AGREGATION DE CHAINE DEPASSANT 4000 CARACTERES AVEC XMLAGG résout effectivement ce problème.
J'ai élaboré un peu plus sur le sujet et cela devrait faire l'affaire dans le cas d'un message très long :
SELECT
table_row_id,
DBMS_XMLGEN.CONVERT (
EXTRACT(
xmltype('<?xml version="1.0"?><document>' ||
XMLAGG(
XMLTYPE('<V>' || DBMS_XMLGEN.CONVERT(data_value)|| '</V>')
order by myOrder).getclobval() || '</document>'),
'/document/V/text()').getclobval(),1) AS data_value
FROM (
SELECT 1 myOrder, 1 table_row_id,'abcdefg>' data_value FROM dual
UNION ALL
SELECT 2, 1 table_row_id,'hijklmn' data_value FROM dual
UNION ALL
SELECT 3, 1 table_row_id,'opqrst' data_value FROM dual
UNION ALL
SELECT 4, 1 table_row_id,'uvwxyz' data_value FROM dual)
GROUP BY
table_row_id