Tout d’abord, ce n’est pas une copie de this question. Si c'est le cas, désolé mais je ne pourrais pas résoudre mon problème en le lisant.
Je reçois cette erreur:
ORA-00932: inconsistent datatypes: expected - got CLOB
Lorsque j'essaie d'exécuter cette instruction SELECT:
SELECT TXT.t_txt
FROM CITADM.tb_avu_txt_grc GR
INNER JOIN CITADM.tb_avu_txt TXT
ON (GR.e_txt = TXT.e_txt and GR.u_txt = TXT.u_txt)
WHERE TXT.u_lin_ord = 1
UNION
SELECT TXT.t_txt
FROM CITADM.tb_avu_txt_grc_cvd GRC
INNER JOIN CITADM.tb_avu_txt TXT
ON (GRC.e_txt = TXT.e_txt and GRC.u_txt = TXT.u_txt)
WHERE TXT.u_lin_ord = 2
Le champ sélectionné (t_txt) est de type de données CLOB. Comme vous pouvez le voir, c'est la même colonne du même tableau. Cette déclaration appartient à une plus grande, j'ai isolé la partie où j'ai ce problème.
Merci beaucoup.
Je crois que le problème est l'utilisation de UNION
au lieu de UNION ALL
. L'opérateur UNION
combinera les deux ensembles et éliminera les doublons . Étant donné que les types CLOB ne peuvent pas être comparés, la partie élimination des doublons n’est pas possible.
Utiliser UNION ALL
ne tentera pas de supprimer les doublons (vous n’avez probablement pas de doublons de toute façon), donc cela devrait fonctionner.
Comme je j'avais des doublons, je ne pouvais pas utiliser UNION ALL. Cette solution fonctionne parfaitement, merci!
BTW: C'est à mon sens la seule réponse correcte, car UNION ALL et UNION sont sémantiquement différents. Si vous n'avez pas du tout de doublons, utiliser UNION impose une surcharge de tri inutile.