Вярвам, че SQL%NOTFOUND връща true когато няма намерени записи. Вашето IF ще се оцени като true в този случай и следователно ще напише вашия put_line на терминала. SQL изразът е изпълнен успешно. Ако изпълните този SQL израз сам от командния ред, ще получите 0 актуализирани/изтрити реда, а не грешка на Oracle.
Ако искате да имате хвърлено изключение, можете да използвате RAISE във вашия IF и го насочете към изключението в блока с изключения, който искате да хвърлите.