Você precisa declarar o tratamento da condição de erro antes que o erro ocorra:
Whenever sqlerror exit sql.sqlcode;
DROP user MYUSER cascade;
EXIT 0;
Você pode alterar o manuseio em diferentes pontos do script. Por exemplo, você pode fazer um drop de proteção antes de criar, ignorando um erro no drop, mas ainda parando se a próxima etapa falhar:
whenever sqlerror continue
drop ...
whenever sqlerror exit failure
create...
alter...
etc
Incidentalmente, na terra do Unix essa abordagem é limitada porque a maioria (todos?) dos shells tem código de retorno limitado, e números mais altos são agrupados; então ORA-0918 seria reportado como 126, impossibilitando a interpretação. Mais importante, alguns valores serão zerados, fazendo parecer que nenhum erro ocorreu. Você não tem esse problema com %errorlevel% felizmente.