sql >> Database >  >> RDS >> Oracle

Hoe geef ik een retourcode van een Oracle-script terug aan het WINDOWS Batch-script dat het heeft aangeroepen?

U moet de afhandeling van de foutconditie declareren voordat de fout optreedt:

Whenever sqlerror exit sql.sqlcode; 
DROP user MYUSER cascade;
EXIT 0;

U kunt de afhandeling op verschillende punten in het script wijzigen. U kunt bijvoorbeeld een beschermende druppel doen voordat u deze maakt, door een fout op de druppel te negeren, maar toch te stoppen als de volgende stap mislukt:

whenever sqlerror continue
drop ...
whenever sqlerror exit failure
create...
alter...
etc

Overigens is deze benadering in Unix-land beperkt omdat de meeste (alle?) shells een beperkte retourcode hebben, en hogere aantallen rondlopen; dus ORA-0918 zou worden gerapporteerd als 126, waardoor het onmogelijk te interpreteren is. Wat nog belangrijker is, is dat sommige waarden teruglopen naar nul, waardoor het lijkt alsof er geen fout is opgetreden. Gelukkig heb je dat probleem niet met %errorlevel%.




  1. Moet de volgorde van de LINQ-queryclausules de prestaties van het Entity Framework beïnvloeden?

  2. PHP-kennisgeving:niet-gedefinieerde offset

  3. Milliseconden afronden in T-SQL

  4. MySQL Fire-And-Forget INSERT / UPDATE / DELETE - mysql_unbuffered_query gebruik aan te raden?