Maison > base de données > tutoriel mysql > Comment résoudre l'erreur Oracle ORA-01489 lors de la concaténation de chaînes dépassant la limite de 4 000 octets ?

Comment résoudre l'erreur Oracle ORA-01489 lors de la concaténation de chaînes dépassant la limite de 4 000 octets ?

DDD
Libérer: 2025-01-05 13:12:40
original
446 Les gens l'ont consulté

How to Resolve Oracle ORA-01489 Error When Concatenating Strings Exceeding the 4000-Byte Limit?

Oracle ORA-01489 : Le résultat de la concaténation de chaînes dépasse la limite

Scénario :

Lors de la tentative pour créer une vue combinant la concaténation de champs et les fonctions LISTAGG, vous pouvez rencontrer l'erreur Oracle ORA-01489 : « Le résultat de la concaténation de chaînes est trop long. » Cette erreur se produit bien que la longueur réelle du champ concaténé soit inférieure à la limite indiquée de 837 octets.

Cause :

Cette erreur est trompeuse et survient en raison de la limite SQL de 4 000. octets, qui s'applique à LISTAGG. Par conséquent, la concaténation de plusieurs champs, chacun dépassant cette limite, peut déclencher l'erreur.

Solutions :

1. Fonction XMLAGG :

Pour contourner le problème, envisagez d'utiliser la fonction XMLAGG au lieu de LISTAGG. XMLAGG n'a pas la limite de 4 000 octets.

SELECT rtrim(xmlagg(XMLELEMENT(e,text,',').EXTRACT('//text()') ).GetClobVal(),',') AS very_long_text
FROM ...
Copier après la connexion

2. Concaténation des sorties XMLAGG :

Si vous devez concaténer plusieurs colonnes dépassant chacune 4 000 octets, concaténez plutôt la sortie XMLAGG de chaque colonne.

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
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal