Như de.hh.holger đã chỉ ra, LISTAGG VỚI CLOB? STRING ĐẠI CƯƠNG VƯỢT QUA 4000 KÝ TỰ VỚI XMLAGG thực sự giải quyết được vấn đề này.
Tôi đã giải thích kỹ hơn một chút về chủ đề này và điều này sẽ thực hiện thủ thuật trong trường hợp một thông báo chuỗi thực sự dài:
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