Това изключение се предизвиква всеки път, когато се изпълни оператор SELECT INTO и се намери повече от един ред. Операторът SELECT INTO очаква да намери точно един ред, нито повече, нито по-малко - в противен случай се предизвиква изключение.
Във вашия пример:
select PK into wsID from RPT_WEBSVC
where KEYVALUE = 'GetMachineNameList'
and category_fk = catID;
изглежда, че трябва да има само един ред на (KEYVALUE, CATEGORY_FK) комбинация, но всъщност това не е така. Ако трябва да има само една, тогава таблицата трябва да има уникално ограничение за тези колони:
alter table RPT_WEBSVC add constraint RPT_WEBSVC_UK
unique (KEYVALUE, CATEGORY_FK);
Това би попречило на някой (или някакъв процес) да добави отново същия ред. Разбира се, ще трябва да дедупликирате таблицата, преди да можете да добавите това ограничение.