Bạn cần khai báo việc xử lý điều kiện lỗi trước khi lỗi xảy ra:
Whenever sqlerror exit sql.sqlcode;
DROP user MYUSER cascade;
EXIT 0;
Bạn có thể thay đổi cách xử lý tại các điểm khác nhau trong tập lệnh. Ví dụ:bạn có thể thực hiện thả bảo vệ trước khi tạo, bằng cách bỏ qua lỗi trên thả, nhưng vẫn dừng nếu bước tiếp theo không thành công:
whenever sqlerror continue
drop ...
whenever sqlerror exit failure
create...
alter...
etc
Ngẫu nhiên, trong Unix-land, cách tiếp cận này bị hạn chế bởi vì hầu hết (tất cả?) Shell có mã trả về hạn chế và các số cao hơn bao quanh; vì vậy ORA-0918 sẽ được báo cáo là 126, khiến nó không thể diễn giải được. Quan trọng hơn, một số giá trị sẽ chuyển về 0, làm cho nó trông giống như không có lỗi xảy ra. May mắn thay, bạn không gặp vấn đề đó với% errorlevel%.