Ten wyjątek jest wywoływany za każdym razem, gdy wykonywana jest instrukcja SELECT INTO i znajduje więcej niż jeden wiersz. Instrukcja SELECT INTO oczekuje, że znajdzie dokładnie jeden wiersz, ani mniej, ani więcej - w przeciwnym razie zgłaszany jest wyjątek.
W twoim przykładzie:
select PK into wsID from RPT_WEBSVC
where KEYVALUE = 'GetMachineNameList'
and category_fk = catID;
wydaje się, że na kombinację (WARTOŚĆ KLUCZY, KATEGORIA_FK) powinien przypadać tylko jeden wiersz, ale w rzeczywistości tak nie jest. Jeśli powinien być tylko jeden, tabela powinna mieć unikatowe ograniczenie dla tych kolumn:
alter table RPT_WEBSVC add constraint RPT_WEBSVC_UK
unique (KEYVALUE, CATEGORY_FK);
To uniemożliwiłoby komuś (lub procesowi) ponowne dodanie tego samego wiersza. Oczywiście przed dodaniem tego ograniczenia konieczne byłoby usunięcie duplikatów tabeli.