Diese Ausnahme wird ausgelöst, wenn eine SELECT INTO-Anweisung ausgeführt wird und mehr als eine Zeile findet. Eine SELECT INTO-Anweisung erwartet, genau eine Zeile zu finden, nicht mehr oder weniger - andernfalls wird eine Ausnahme ausgelöst.
In Ihrem Beispiel:
select PK into wsID from RPT_WEBSVC
where KEYVALUE = 'GetMachineNameList'
and category_fk = catID;
Es scheint, dass es nur eine Zeile pro (KEYVALUE, CATEGORY_FK)-Kombination geben sollte, aber das ist tatsächlich nicht der Fall. Wenn es nur eine geben sollte, sollte die Tabelle eine eindeutige Einschränkung für diese Spalten haben:
alter table RPT_WEBSVC add constraint RPT_WEBSVC_UK
unique (KEYVALUE, CATEGORY_FK);
Das würde verhindern, dass jemand (oder ein Prozess) dieselbe Zeile erneut hinzufügt. Natürlich müssten Sie die Tabelle deduplizieren, bevor Sie diese Einschränkung hinzufügen könnten.