Résoudre intelligemment l'erreur de chaîne de fonction Oracle LISTAGG trop longue
Dans Oracle SQL Developer, lorsque vous utilisez la fonction LISTAGG pour agréger des données, vous pouvez rencontrer l'erreur « ORA-01489 : le résultat de la concaténation de chaînes est trop long ». Cette erreur se produit lorsque la sortie concaténée dépasse une limite interne (généralement 4 000 caractères).
Pour contourner cette limitation, la fonction XMLAGG peut être utilisée comme alternative. Cette fonction permet l'agrégation de données dans un document XML, contournant ainsi les restrictions de caractères.
<code class="language-sql">SELECT RTRIM(XMLAGG(XMLELEMENT(E,colname,',').EXTRACT('//text()') ORDER BY colname).GetClobVal(),',') AS LIST FROM tablename;</code>
Cette requête utilise la fonction XMLAGG pour agréger les valeurs de la colonne spécifiée (colname) dans un document XML. Ensuite, utilisez la méthode GetClobVal() pour convertir le document XML en type de données CLOB, supprimant ainsi la limite de caractères.
La sortie finale est une chaîne de valeurs agrégées séparées par des virgules, stockées sous forme de valeurs CLOB, permettant le traitement de grandes sorties de jointure.
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!