Musisz zadeklarować obsługę warunków błędu przed wystąpieniem błędu:
Whenever sqlerror exit sql.sqlcode;
DROP user MYUSER cascade;
EXIT 0;
Możesz zmienić obsługę w innym miejscu skryptu. Na przykład możesz wykonać upuszczenie ochronne przed utworzeniem, ignorując błąd podczas upuszczania, ale nadal zatrzymując się, jeśli następny krok się nie powiedzie:
whenever sqlerror continue
drop ...
whenever sqlerror exit failure
create...
alter...
etc
Nawiasem mówiąc, w systemie Unix to podejście jest ograniczone, ponieważ większość (wszystkie?) powłok ma ograniczony kod powrotu, a wyższe liczby zawijają się wokół; więc ORA-0918 zostanie zgłoszony jako 126, co uniemożliwi interpretację. Co ważniejsze, niektóre wartości zostaną zawinięte do zera, przez co wygląda na to, że nie wystąpił żaden błąd. Na szczęście nie masz tego problemu z %errorlevel%.