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
Susan Sarandonoriginal
2025-01-18 16:46:111075parcourir

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>

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>

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>

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!

Déclaration:
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