Tôi tin rằng SQL%NOTFOUND trả về true khi không có hồ sơ nào được tìm thấy. IF của bạn sẽ đánh giá thành true trong trường hợp đó, và do đó ghi put_line của bạn vào terminal. Câu lệnh SQL được thực thi thành công. Nếu bạn tự thực thi câu lệnh SQL đó từ dòng lệnh, bạn sẽ nhận được 0 hàng được cập nhật / xóa, không phải lỗi Oracle.
Nếu bạn muốn ném một ngoại lệ, bạn có thể sử dụng RAISE bên trong IF của bạn và trỏ nó đến ngoại lệ trong khối ngoại lệ mà bạn muốn đưa ra.