sql >> Database >  >> RDS >> Oracle

Onverwacht resultaat van multiset-toewijzing in Oracle SQL

Het is een fout. Een /*+ NO_MERGE */ . toevoegen hint naar de tweede inline-weergave in het laatste voorbeeld zal de verwachte resultaten genereren. Zie deze SQL Fiddle bijvoorbeeld. Ongeacht de zoekopdracht, die hint mag de resultaten nooit veranderen. Er zijn een aantal andere schijnbaar ongerelateerde wijzigingen die u kunt aanbrengen die de juiste resultaten opleveren, zoals het verwijderen van enkele kolommen of het toevoegen van een ongebruikt ROWNUM in het midden.

Oracle herschrijft uw query om deze te optimaliseren, maar doet iets verkeerd. Je zou waarschijnlijk wat meer informatie kunnen krijgen door de zoekopdracht te traceren, maar ik betwijfel of je het probleem echt kunt oplossen. Werk er voorlopig omheen en dien een serviceverzoek in bij Oracle zodat ze een bug kunnen maken en deze uiteindelijk kunnen oplossen.




  1. Waarde in leeg veld vervangen na gebruik split_part

  2. Booleaanse eigenschap toewijzen aan Oracle met behulp van Entity Framework

  3. Waarom is PostgreSQL-arraytoegang zo veel sneller in C dan in PL/pgSQL?

  4. Oracle 12c XML haalt waarde uit antwoord