Oracle
 sql >> Base de données >  >> RDS >> Oracle

Résultat inattendu du mappage multiset dans Oracle SQL

C'est un bogue. Ajout d'un /*+ NO_MERGE */ l'indication de la deuxième vue en ligne dans le dernier exemple générera les résultats attendus. Voir ce SQL Fiddle à titre d'exemple. Quelle que soit la requête, cet indice ne devrait jamais modifier les résultats. Il y a quelques autres modifications apparemment sans rapport que vous pouvez apporter qui généreront les résultats corrects, comme la suppression de certaines colonnes ou l'ajout d'un ROWNUM inutilisé au milieu.

Oracle réécrit votre requête pour l'optimiser, mais fait quelque chose de mal. Vous pourriez probablement obtenir plus d'informations en traçant la requête, mais je doute que vous puissiez vraiment résoudre le problème. Contournez-le pour le moment et soumettez une demande de service à Oracle afin qu'il puisse créer un bogue et éventuellement le corriger.