sql >> Database teknologi >  >> RDS >> Oracle

Årsag til at få ORA-01422:nøjagtig hentning returnerer mere end det anmodede antal rækker

Denne undtagelse opstår, når en SELECT INTO-sætning udføres og finder mere end én række. En SELECT INTO-sætning forventer at finde præcis én række, hverken mere eller mindre - ellers opstår der en undtagelse.

I dit eksempel:

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

det ser ud til, at der kun skal være én række pr. (KEYVALUE, CATEGORY_FK) kombination, men det er faktisk ikke tilfældet. Hvis der kun skal være én, skal tabellen have en unik begrænsning på disse kolonner:

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

Det ville forhindre nogen (eller en eller anden proces) i at tilføje den samme række igen. Selvfølgelig skal du de-duplikere tabellen, før du kan tilføje den begrænsning.



  1. Brug af Oracle Service Names med SQLAlchemy

  2. generere tomme rækker, selvom de er tomme mellem 2 datoer

  3. SQL FIFO-forespørgsel med gruppe efter

  4. databasegendannelse til en bestemt tilstand til test