Ik geloof dat SQL%NOTFOUND retourneert true wanneer er geen records worden gevonden. Uw IF zou in dat geval naar waar evalueren en daarom uw put_line naar terminal schrijven. De SQL-instructie is succesvol uitgevoerd. Als u die SQL-instructie zelf uitvoert vanaf de opdrachtregel, ontvangt u 0 rijen bijgewerkt/verwijderd, geen Oracle-fout.
Als je wilt dat een uitzondering wordt gegenereerd, kun je RAISE . gebruiken binnen uw IF en wijs het naar de uitzondering in het uitzonderingsblok dat je wilt hebben.