sql >> Databáze >  >> RDS >> Oracle

Důvod pro získání ORA-01422:Přesné načtení vrátí více než požadovaný počet řádků

Tato výjimka se vyvolá vždy, když se provede příkaz SELECT INTO a najde více než jeden řádek. Příkaz SELECT INTO očekává, že najde přesně jeden řádek, ne více ani méně - jinak je vyvolána výjimka.

Ve vašem příkladu:

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

zdá se, že na kombinaci (KEYVALUE, CATEGORY_FK) by měl být pouze jeden řádek, ale ve skutečnosti tomu tak není. Pokud by měl být pouze jeden, pak by tabulka měla mít jedinečné omezení na tyto sloupce:

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

To by zabránilo tomu, aby někdo (nebo nějaký proces) znovu přidal stejný řádek. Před přidáním tohoto omezení byste samozřejmě museli deduplikovat tabulku.



  1. Vytváření vlastních html značek pro CMS?

  2. Převod řetězce na typ mySql DECIMAL

  3. mysqli_connect():(HY000/2003):Nelze se připojit k serveru MySQL na 'název domény' (111)

  4. Zobrazte hodnoty polí tabulky Mysql v poli Vybrat