Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

KHI NÀO SQLERROR không bao giờ hoạt động

Hãy xem xét đoạn mã chung bên dưới:

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

Đây, $? được đặt thành trạng thái thoát của cmd1 . Trạng thái thoát của cmd2 bị mất.

Trong trường hợp của bạn, sqlplus xảy ra là cmd2. Vì vậy, trạng thái thoát của lệnh đó không được ghi lại trong $? .

Bạn có thể thử cái này;

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

Lưu ý rằng nếu cmd1 là một cấu trúc phức tạp (như while read ví dụ:bất kỳ thứ nào bạn chạy trong vòng lặp while đó sẽ được chạy trong một vỏ con và mọi môi trường (biến / pwd) đã thay đổi sẽ bị mất.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ngày-giờ được tạo cho hàng Bảng trong Oracle là gì?

  2. Cách lên lịch chạy công việc vào thời điểm cụ thể bằng dbms_scheduler

  3. CẬP NHẬT SQL trong một thứ hạng CHỌN trên câu phân vùng

  4. So sánh Oracle UCP, C3P0 và HikariCP

  5. Lỗi lớp JPA Entity với 2 trường @GeneratedValue