sql >> Database >  >> RDS >> Oracle

Reden voor het verkrijgen van ORA-01422:exact ophalen retourneert meer dan het gevraagde aantal rijen

Deze uitzondering treedt op wanneer een SELECT INTO-instructie wordt uitgevoerd en meer dan één rij vindt. Een SELECT INTO-instructie verwacht precies één rij te vinden, niet meer of minder - anders wordt er een uitzondering gemaakt.

In jouw voorbeeld:

select PK into wsID from RPT_WEBSVC
where KEYVALUE = 'GetMachineNameList'
and category_fk = catID;

het lijkt erop dat er maar één rij per (KEYVALUE, CATEGORY_FK) combinatie zou moeten zijn, maar in feite is dat niet het geval. Als er maar één zou moeten zijn, zou de tabel een unieke beperking voor die kolommen moeten hebben:

alter table RPT_WEBSVC add constraint RPT_WEBSVC_UK
    unique (KEYVALUE, CATEGORY_FK);

Dat zou voorkomen dat iemand (of een proces) dezelfde rij opnieuw toevoegt. Natuurlijk moet je de tabel ontdubbelen voordat je die beperking kunt toevoegen.



  1. SQL-query, alleen selecteren als kolom niet null is, anders niet selecteren

  2. ONDERSCHEID een kolom in een database

  3. Ontleden SELECT-clausule van SQL-query's in een PHP-array

  4. Hoe kan ik een lijst maken Array met de cursorgegevens in Android