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 :
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!