sql >> Databasteknik >  >> RDS >> Oracle

Anledning till att skaffa ORA-01422:exakt hämtning returnerar fler än begärt antal rader

Detta undantag uppstår när en SELECT INTO-sats körs och hittar mer än en rad. En SELECT INTO-sats förväntar sig att hitta exakt en rad, varken mer eller mindre - annars höjs ett undantag.

I ditt exempel:

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

det verkar som att det bara ska finnas en rad per (KEYVALUE, CATEGORY_FK) kombination, men det är faktiskt inte fallet. Om det bara ska finnas en så bör tabellen ha en unik begränsning för dessa kolumner:

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

Det skulle förhindra att någon (eller någon process) lägger till samma rad igen. Naturligtvis skulle du behöva deduplicera tabellen innan du kan lägga till den begränsningen.



  1. PgAdmin4 aktivera felsökning

  2. Magento - Bastabell eller vy hittades inte

  3. Räkna antalet rader som innehåller samma värde

  4. Emoji-data hämtade via ODBC-anslutning visas som frågetecken