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.