Oracle
 sql >> Baza danych >  >> RDS >> Oracle

KIEDYKOLWIEK SQLERROR nigdy nie działa

Rozważ poniższy ogólny fragment:

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

Tutaj, $? jest ustawiony na status wyjścia cmd1 . Status wyjścia cmd2 jest zgubiony.

W twoim przypadku sqlplus tak się składa, że ​​jest to cmd2. Tak więc status wyjścia tego polecenia nie jest przechwycony w $? .

Możesz tego spróbować;

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

Zauważ, że jeśli cmd1 jest złożoną strukturą (jak while read np. każda rzecz, którą uruchomisz, podczas gdy pętla zostanie uruchomiona w podpowłoce, a każde zmienione środowisko (zmienne/pwd) zostanie utracone.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oświadczenie FORALL z dolną i górną granicą w bazie danych Oracle

  2. Uzyskaj identyfikator ostatnio wstawionego rekordu w Oracle db

  3. Oracle Apex 5.0 — Wyświetlaj obraz statyczny

  4. połączenie z tomcat zostało przerwane po okresie bezczynności

  5. Zapytanie o usunięcie Oracle zajmuje zbyt dużo czasu