7
votes

Comment résoudre l'erreur Oracle ORA-01790?

J'ai deux instructions de sélection jointes par "Union". Tout en exécutant cette déclaration que 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 - "L'expression doit avoir le même type de données que l'expression correspondante"

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


0 commentaires

8 Réponses :


16
votes

Sans regarder votre SQL, je suppose que vous avez des colonnes d'union 'd'avoir des types de données différents.


2 commentaires

Les colonnes qui sont syndiquées dépendent de la commande. Vous avez donc probablement une inadéquation dans l'ordre de colonne au sein de l'Union.


d'accord, une mauvaise commande de colonne ou un champ est manquant dans la section Sélectionner ou valoriser



11
votes

Voici ce qui a été trouvé:

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

Cause: Un élément de liste Select correspond à un élément de liste de sélection avec un autre type de données dans une autre requête de la même expression définie.

Action: Vérifiez que tous les éléments de liste de sélection correspondants ont les mêmes types de données. Utilisez les fonctions TO_NOMBER, TO_CHAR et TO_DATE pour effectuer des conversions de données explicites.

Je n'ai pas vu votre requête, mais je devine que l'on sélectionne dans votre syndicat ne sélectionne pas les mêmes colonnes que l'autre.


0 commentaires

2
votes

Vous devez vous assurer que les colonnes correspondantes de votre syndicat ont le même type de données. La voie la plus simple serait de commenter des colonnes une par une à une autre pour réduire la colonne, puis utilisez une fonction de conversion de type explicite dans l'une d'entre elles pour effectuer des types de correspondance.


0 commentaires

3
votes

L'erreur vous indique que vous êtes des colonnes syndicales avec différents types de données. Il y a des fonctions Oracle qui convertissent un type à un autre (par exemple. TO_CHAR »), vous devrez convertir les types de données en format commun, ou au moins un dans l'autre. Si vous postez la requête / types réelles, il serait possible d'être plus spécifique.


0 commentaires

1
votes

Vous avez essayé d'exécuter une instruction SELECT (probablement un syndicat ou une union), et toutes les requêtes ne contiennent pas de types de données correspondants dans les colonnes de résultat.

TechonThenet - ORA-01790


0 commentaires

2
votes

Comme je l'ai mentionné dans la question, j'aimerais avoir des suggestions pour résoudre mon problème. Ce que j'ai fait est activé une colonne à la fois dans chaque instruction SELECT et constatée que j'avais une inadéquation à la toute dernière colonne de mon syndicat SQL. Merci beaucoup pour participer et m'aider, mais je savais que j'avais une inadéquation de type, ce que je ne savais pas, c'est comment résoudre le problème.


0 commentaires

6
votes

Clairement, le problème de l'affiche a été résolu il y a plus d'une demi-décennie, je voulais néanmoins signaler à quiconque lisant ce post à la recherche de l'aide que l'ordre des propriétés sélectionnées (colonnes) doit correspondre à une instruction Uniond à la suivant. Il ne suffit pas de simplement avoir les noms et les types de données correspondent, bien que cela soit dans un sens la cause première. Mais en raison de la manière dont les instructions de l'Union sont manipulées à Oracle, il est possible d'obtenir l'erreur ORA-01790 en raison d'une inadéquation dans la commande des colonnes uniquement.

Dans mon cas, j'ai eu une requête avec un syndicat tous deux sélectionnements. On sélectionne une colonne nommée "Name générique_column_" comme le 25ème élément de la sélection, et l'autre sélection avait la même colonne nommée "generic_column_name" du même type de données (j'ai testé plusieurs manières via le codage dur et à l'aide de conversions de type de données forcées ). Cependant, la seconde sélection a eu cet élément dans la 19e place, de sorte que toutes les colonnes de là ont été compensées et ceci déclenché l'erreur ORA-01790.


1 commentaires

Les réponses votées plus élevées ne répondent pas à ce scénario, merci de revivre. Les types de données et la commande doivent correspondre. Les documents Oracle ne font pas d'évidence qu'ils spécifient que le type et le nombre de colonnes doivent correspondre.



0
votes

J'ai eu le même problème aujourd'hui. Le problème est dans le Union , fondamentalement dans l'ordre des colonnes


0 commentaires