sql >> Database teknologi >  >> RDS >> Oracle

NÅR SQLERROR aldrig virker

Overvej nedenstående generiske kodestykke:

$ cmd1 < <(cmd2) # Or cmd1 <(cmd2)
$ echo $?

Her $? er indstillet til udgangsstatus for cmd1 . Afslutningsstatus for cmd2 er tabt.

I dit tilfælde sqlplus tilfældigvis er cmd2. Så udgangsstatussen for den kommando er ikke fanget i $? .

Du kunne prøve dette;

$ sqlplus ... | cmd1
$ status=(${PIPESTATUS[@]})
$ for i in ${status[@]}; do
>     [ $i -ne 0 ] && echo Exited with $i
> done
$ echo Exited with 0

Bemærk, at hvis cmd1 er en kompleks struktur (som while read f.eks.) enhver ting, du kører i, mens loop vil blive kørt i en subshell, og ethvert miljø (variabler/pwd) ændret vil gå tabt.




  1. Dataforbindelsesændringer i 2020.24

  2. Hibernate @Filter samling af enums

  3. Opret en midlertidig tabel med datoer

  4. Udvikling til Windows Server 2003 64 bit på Windows XP 32 bit