Selon Oracle (DocId 2658003.1), cela se produit lorsque trois conditions sont remplies :
- Joindre ANSI
- UNION / UNION TOUS
- la même table apparaît plusieurs fois dans la requête
Apparemment, "QCSJ_C" est utilisé en interne lorsqu'Oracle transforme les jointures de style ANSI.
MODIFIER :
Trouvé un exemple minimal :
SELECT * FROM dual d1 JOIN dual d2 ON d1.dummy=d2.dummy
UNION
SELECT * FROM dual d1 JOIN dual d2 ON d1.dummy=d2.dummy;
QCSJ_C000000000300000 QCSJ_C000000000300001
X X
Il peut être corrigé soit en utilisant une syntaxe de jointure non-ANSI :
SELECT * FROM dual d1, dual d2 WHERE d1.dummy=d2.dummy
UNION
SELECT * FROM dual d1, dual d2 WHERE d1.dummy=d2.dummy;
DUMMY DUMMY_1
X X
Ou, de préférence en utilisant des noms de colonne au lieu de *
:
SELECT d1.dummy, d2.dummy FROM dual d1 JOIN dual d2 ON d1.dummy=d2.dummy
UNION
SELECT d1.dummy, d2.dummy FROM dual d1 JOIN dual d2 ON d1.dummy=d2.dummy;
DUMMY DUMMY_1
X X