Du måste deklarera feltillståndshanteringen innan felet uppstår:
Whenever sqlerror exit sql.sqlcode;
DROP user MYUSER cascade;
EXIT 0;
Du kan ändra hanteringen vid olika punkter i skriptet. Du kan till exempel göra en skyddande droppe innan du skapar, genom att ignorera ett fel på droppen, men ändå stoppa om nästa steg misslyckas:
whenever sqlerror continue
drop ...
whenever sqlerror exit failure
create...
alter...
etc
För övrigt, i Unix-land är detta tillvägagångssätt begränsat eftersom de flesta (alla?) skal har begränsad returkod, och högre siffror omsluter; så ORA-0918 skulle rapporteras som 126, vilket gör det omöjligt att tolka. Ännu viktigare är att vissa värden bryts till noll, vilket gör att det ser ut som om inget fel har inträffat. Du har inte det problemet med %errorlevel% som tur är.