sql >> Databáze >  >> RDS >> Oracle

KDYŽ SQLERROR nikdy nefunguje

Zvažte níže obecný úryvek:

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

Tady, $? je nastaven na ukončovací stav cmd1 . Stav ukončení cmd2 je ztraceno.

Ve vašem případě sqlplus náhodou je to cmd2. Takže stav ukončení tohoto příkazu není zachycen v $? .

Můžete zkusit toto;

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

Všimněte si, že pokud cmd1 je složitá struktura (jako while read např.) cokoli, co spustíte v této smyčce while, bude spuštěno v subshell a jakékoli změněné prostředí (proměnné/pwd) bude ztraceno.




  1. Neplatný text JSON v argumentu 2 - json_contains v MySQL 5.7.8

  2. změnit sloupec přetažení tabulky v databázi Oracle

  3. pokud neexistuje, vložte do MySql

  4. Problém s přístupem k MySQL z Javy