Oracle
 sql >> база данни >  >> RDS >> Oracle

WHENEVER SQLERROR никога не работи

Помислете за общия фрагмент по-долу:

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

Ето, $? е зададено на изходно състояние на cmd1 . Изходният статус на cmd2 се губи.

Във вашия случай, sqlplus случайно е cmd2. Така че изходният статус на тази команда не се записва в $? .

Можете да опитате това;

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

Имайте предвид, че ако cmd1 е сложна структура (като while read напр.) всичко, което изпълнявате в този цикъл while, ще се изпълнява в подобвивка и всяка променена среда (променливи/pwd) ще бъде загубена.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. regexp за всички знаци с ударения в Oracle

  2. Неуспешно преобразуване във вътрешно представяне

  3. PHP ORA-01745:невалидно име на променлива за хост/свързване Предупреждение

  4. Спазвайте реда от клауза „IN“.

  5. променете размера на типа данни в sql