Maison > base de données > tutoriel mysql > Comment surmonter l'erreur « Le résultat de la concaténation de chaînes est trop long » d'Oracle lors de l'utilisation de LISTAGG ?

Comment surmonter l'erreur « Le résultat de la concaténation de chaînes est trop long » d'Oracle lors de l'utilisation de LISTAGG ?

Susan Sarandon
Libérer: 2025-01-18 16:46:11
original
1001 Les gens l'ont consulté

How to Overcome Oracle's

Résolution de l'erreur « Le résultat de la concaténation de chaînes est trop long » dans la fonction LISTAGG d'Oracle

Une alternative est nécessaire lorsque la fonction LISTAGG rencontre une grande quantité de données et renvoie une erreur « Le résultat de la concaténation de chaînes est trop long ».

Solution de la fonction XMLAGG

Afin d'obtenir des fonctionnalités similaires à LISTAGG, la fonction XMLAGG d'Oracle peut être utilisée. La fonction XMLAGG regroupe les données dans un document XML, permettant aux valeurs concaténées de dépasser la limite LISTAGG. La syntaxe suivante montre comment utiliser XMLAGG :

<code class="language-sql">SELECT RTRIM(XMLAGG(XMLELEMENT(E,colname,',').EXTRACT('//text()') ORDER BY colname).GetClobVal(),',') AS LIST
FROM tablename;</code>
Copier après la connexion

Avantages de XMLAGG

La fonction XMLAGG présente les avantages suivants :

  • Aucune limite de ligne : XMLAGG stocke les valeurs concaténées sous forme de CLOB (Character Large Objects) sans limite de ligne.

Exemple d'utilisation

Considérez l'extrait de code suivant :

<code class="language-sql">SELECT SESSION_DT, C_IP, CS_USER_AGENT,
listagg(WEB_LINK, ' ')
WITHIN GROUP(ORDER BY C_IP, CS_USER_AGENT) "WEB_LINKS"
FROM webviews
GROUP BY C_IP, CS_USER_AGENT, SESSION_DT
ORDER BY SESSION_DT</code>
Copier après la connexion

Pour résoudre les erreurs rencontrées, LISTAGG peut être remplacé par XMLAGG :

<code class="language-sql">SELECT SESSION_DT, C_IP, CS_USER_AGENT,
RTRIM(XMLAGG(XMLELEMENT(E,WEB_LINK,',').EXTRACT('//text()') ORDER BY WEB_LINK).GetClobVal(),',') AS "WEB_LINKS"
FROM webviews
GROUP BY C_IP, CS_USER_AGENT, SESSION_DT
ORDER BY SESSION_DT</code>
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal