Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como faço para passar um código de retorno de um script Oracle de volta para o script WINDOWS Batch que o chamou?


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.