Credo SQL%NOTFOUND
restituisce true
quando non vengono trovati record. Il tuo IF
in tal caso valuterebbe true e quindi scrivi la tua put_line sul terminale. L'istruzione SQL è stata eseguita correttamente. Se esegui l'istruzione SQL da sola dalla riga di comando, riceverai 0 righe aggiornate/cancellate, non un errore Oracle.
Se vuoi che venga generata un'eccezione, puoi usare RAISE
all'interno del tuo IF
e puntalo all'eccezione nel blocco di eccezioni che desideri venga generato.