Home >Database >Mysql Tutorial >How to Resolve Oracle ORA-01489 Error When Concatenating Strings Exceeding the 4000-Byte Limit?
Oracle ORA-01489: String Concatenation Result Exceeds Limit
Scenario:
While attempting to create a view that combines field concatenation and LISTAGG functions, you may encounter the Oracle error ORA-01489: "Result of string concatenation is too long." This error occurs despite the actual concatenated field length being below the reported 837 bytes limit.
Cause:
This error is misleading and arises due to the SQL limit of 4000 bytes, which applies to LISTAGG. Therefore, concatenating multiple fields, each exceeding this limit, can trigger the error.
Solutions:
1. XMLAGG Function:
As a workaround, consider using the XMLAGG function instead of LISTAGG. XMLAGG does not have the 4000-byte limit.
SELECT rtrim(xmlagg(XMLELEMENT(e,text,',').EXTRACT('//text()') ).GetClobVal(),',') AS very_long_text FROM ...
2. Concatenating XMLAGG Outputs:
If you need to concatenate multiple columns each exceeding 4000 bytes, concatenate the XMLAGG output of each column instead.
SELECT ID, rtrim(xmlagg(XMLELEMENT(e,col1,',').EXTRACT('//text()') ).GetClobVal(), ',') || rtrim(xmlagg(XMLELEMENT(e,col2,',').EXTRACT('//text()') ).GetClobVal(), ',') AS very_long_text FROM ... GROUP BY ID
The above is the detailed content of How to Resolve Oracle ORA-01489 Error When Concatenating Strings Exceeding the 4000-Byte Limit?. For more information, please follow other related articles on the PHP Chinese website!