ORA-01489: résultat de la concaténation de chaîne est trop longue
ORA-01489: résultat de la concaténation de chaîne est trop longue
La requête sql ci-dessous visent à extraire des données de la base de données comme tuyau délimité et bobines dans un fichier texte sous unix
select a||'|'||b||'|'||c||'|'||d from table
union
select a||'|'||b||'|'||c||'|'||d from table
De temps en temps donne l'erreur ORA ORA-01489: résultat de la concaténation de chaîne est trop longue
Cela ressemble à des présentes si l'sélectionnez dépasse 4000 limite
J'ai essayé d'utiliser to_clob mais cela ne fonctionne qu'avec "l'union de tous"
Est-il une manière que je peux contourner ce problème
Double Possible de oracle - Résultat de la concaténation de chaîne est trop longue
OriginalL'auteur navin | 2011-04-26
Vous devez vous connecter pour publier un commentaire.
Faire de l'union avant la concaténation.
OriginalL'auteur Dave Costa
Comme vous l'avez constaté, à l'aide de
to_clob
a ses limites. Et pour être honnête, je pense que vous êtes en utilisant un outil très bien (SGBDR) comme un blunt paléolithique arme.La façon la plus simple de contourner le problème est de faire la concaténation in situ, dans votre code, plutôt que de le faire avec SQL. Il y a une longueur maximale pour la concaténation des opérations dans Oracle (4k longueur), et il y a une limite sur laquelle vous pouvez utiliser
to_clob
.Donc si vous avez ces deux limites dures, la chose la plus sensée est de faire ce que je t'ai proposé (faire la concaténation du code) au lieu d'essayer de subvertir ou de trouver un quasi-magique façon de contourner cela.
sélectionnez a, b, c, d de la table A
union
sélectionnez a, b, c, d partir de la table B
Puis prendre la résultante du jeu de résultats (ou quelle que soit la langue spécifique de la construction) et concaténer les champs dans le code de votre application.
OriginalL'auteur luis.espinal
De cette façon que j'utilise pour trouver la procédure
Le point intéressant est que la table all_source de disposer de l'information de chaque procédure est divisée par des lignes, qui ne sont de traitement difficile. Pour cette raison, tout d'abord, je concaténer les lignes pour chaque procédure, et le second l'option SUR le DÉPASSEMENT de TRONQUER pour éviter le débordement de la chaîne; bien sûr qu'il fonctionne pour moi parce que j'ai seulement besoin de la procédure de déclaration.
Dans ce cas, je suis à la recherche pour les procédures qui contiennent le nom "P_" et avoir des attributs de type.
La même chose pourrait être appliquée pour les fonctions de recherche en changeant uniquement type = "PROCÉDURE" par type = "FONCTION"
Espérons que cette aide.
OriginalL'auteur Luis Carlos