ORA-01403 (Nie znaleziono danych) dzieje się, gdy zapytanie nic nie zwraca i próbujesz przekazać je do zmiennej przez INTO .
ORA-01422 (Zbyt wiele wierszy) ma miejsce, gdy zapytanie zwraca więcej niż 1 wiersz, który próbujesz zmieścić w INTO .
Zajmujesz się no_data_found od pierwszego SELECT zapytanie, ale nie obsługujesz too_many_rows od pierwszego zapytania. Jeśli Twój pierwszy SELECT zapytanie generuje no_data_found wyjątek, będzie obsługiwany z EXCEPTION , w przeciwnym razie wyrzuci too_many_rows wyjątek, niż nie powiedzie się jako drugi obraz.
Więc gdzie jest no_data_found dzieje się wyjątek? Prawdopodobnie od ciebie drugi SELECT zapytanie.
Powinieneś zapętlić pierwszy SELECT zapytanie, aby uniknąć no_data_found lub too_many_rows i upewnij się, że drugi SELECT zapytanie zwraca zawsze 1 wiersz.