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