sql >> Databasteknik >  >> RDS >> Oracle

Hur skickar jag tillbaka en returkod från ett Oracle-skript till WINDOWS Batch-skriptet som anropade det?

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.




  1. SQL ORDER BY flera kolumner

  2. SQL Server - Inkludera NULL med UNPIVOT

  3. PDOStatement::execute() returnerar true men data uppdateras inte

  4. mysqli_connect till fjärrserver