Question

J'ai deux instructions select jointes par « union ». Pendant l'exécution de cette déclaration, j'ai:

Rapport d'erreur: Erreur SQL: ORA-01790: l'expression doit avoir le même type de données que l'expression correspondante 01790. 00000 - "expression doit avoir le même type de données que l'expression correspondante"

Peut-être que vous pouvez me donner un conseil sur la façon de diagnostiquer ce problème?

Était-ce utile?

La solution 7

Comme je l'ai mentionné dans la question que je voudrais avoir des conseils pour une façon de résoudre mon problème. Ce que je l'ai fait est activé une colonne à la fois dans chaque instruction select et a constaté que j'avais décalage à la dernière colonne de mon UNION SQL. Merci beaucoup pour participer et aider moi, mais je savais que je devais incompatibilité de type, ce que je ne sais pas comment résoudre.

Autres conseils

Sans regarder votre SQL, je suppose que vous avez des colonnes étant UNION'ed qui ont différents types de données.

Voici ce qui a trouvé:

ORA-01790: expression doit avoir le même type de données que l'expression correspondante

Cause:. Un élément de la liste SELECT correspond à un élément de la liste SELECT avec un type de données différent dans une autre requête de la même expression de consigne

Action: Assurez-vous que tous les éléments de la liste SELECT correspondants ont les mêmes types de données. Utilisez les to_number, TO_CHAR et fonctions TO_DATE pour effectuer des conversions de données explicites.

Je ne l'ai pas vu votre requête, mais je devine que l'on select dans votre union est ne pas sélectionner les mêmes colonnes que l'autre.

L'erreur vous dit que vous êtes colonnes union avec ing différents types de données. Il y a des fonctions d'oracle qui convertissent un type à l'autre (par exemple « to_char »), vous devrez convertir les types de données dans un format commun, ou au moins un dans l'autre. Si vous publiez la requête réelle / types, il serait possible d'être plus specifc.

Il est clair que la question de l'affiche a été résolu il y a plus d'une demi-décennie, néanmoins je voulais signaler à tous ceux qui lisent ce post à la recherche d'aide que l'ordre des propriétés sélectionnées (colonnes) doit correspondre d'une déclaration filles fusionnées à la suivant. Il ne suffit pas d'avoir simplement les noms et les types de données correspondent, bien que ce soit dans un sens la cause racine. Mais en raison de la façon dont les déclarations de l'Union sont traités dans Oracle, il est possible d'obtenir l'erreur ORA-01790 en raison d'un décalage dans l'ordre des colonnes seulement.

Dans mon cas, j'avais une requête avec un UNION ALL de deux sélections. Une sélection avait une colonne nommée « generic_column_name » comme 25 élément dans la sélection et l'autre sélection avait cette même colonne nommée « generic_column_name » du même type de données (I testé plusieurs façons par codage en dur et aussi en utilisant des conversions de types de données forcé ). Cependant, le second select avait cet objet 19ème place, de sorte que toutes les colonnes de là ont été contrebalancées et ce qui a déclenché l'erreur ORA-01790.

Vous devez vous assurer que les colonnes correspondantes dans votre union ont le même type de données. La façon la plus simple serait de commenter les colonnes un par un pour limiter à la colonne et puis utilisez la fonction de conversion de type explicite dans l'un d'entre eux pour faire correspondre les types.

Vous avez essayé d'exécuter une instruction SELECT (probablement UNION ou UNION ALL), et toutes les requêtes ne contiennent pas de données correspondant à des types dans les colonnes de résultat.

Techonthenet - ORA-01790

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top