Ich glaube SQL%NOTFOUND
gibt true
zurück wenn keine Datensätze gefunden werden. Ihr IF
würde in diesem Fall als wahr ausgewertet und schreibt daher Ihre put_line in das Terminal. Die SQL-Anweisung wurde erfolgreich ausgeführt. Wenn Sie diese SQL-Anweisung selbst von der Befehlszeile aus ausführen, erhalten Sie 0 aktualisierte/gelöschte Zeilen, keinen Oracle-Fehler.
Wenn Sie möchten, dass eine Ausnahme ausgelöst wird, können Sie RAISE
verwenden in Ihrem IF
und verweisen Sie auf die Ausnahme im Ausnahmeblock, den Sie geworfen haben möchten.