sql >> Database >  >> RDS >> Oracle

WANNEER SQLERROR nooit werkt

Overweeg het onderstaande algemene fragment:

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

Hier, $? is ingesteld op de afsluitstatus van cmd1 . De afsluitstatus van cmd2 is verloren.

In jouw geval, sqlplus blijkt cmd2 te zijn. Dus de afsluitstatus van dat commando wordt niet vastgelegd in $? .

Je zou dit kunnen proberen;

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

Merk op dat als cmd1 is een complexe structuur (zoals while read b.v.) alles wat u in die while-lus uitvoert, wordt uitgevoerd in een subshell en elke gewijzigde omgeving (variabelen/pwd) gaat verloren.




  1. Groeperen per maand in Oracle

  2. Hoe de Meridiem Indicator (AM/PM) toe te voegen aan een tijdwaarde in Oracle

  3. DateDiff om uren en minuten uit te voeren

  4. MySQL LEAST()-functie - Vind het kleinste argument in een lijst met argumenten