Wierzę, że SQL%NOTFOUND
zwraca true
gdy nie zostaną znalezione żadne rekordy. Twój IF
w takim przypadku oszacowałby się na true i dlatego zapisze swój put_line do terminala. Instrukcja SQL została wykonana pomyślnie. Jeśli wykonasz tę instrukcję SQL samodzielnie z wiersza poleceń, otrzymasz 0 zaktualizowanych/usuniętych wierszy, a nie błąd Oracle.
Jeśli chcesz rzucić wyjątek, możesz użyć RAISE
wewnątrz twojego IF
i wskaż go na wyjątek w bloku wyjątków, który chcesz wyrzucić.