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

Cách gọi một Thủ tục sử dụng cùng một bảng trong sau khi kích hoạt

Bạn không thể.

Trình kích hoạt cấp hàng bình thường không thể truy vấn bảng mà trình kích hoạt được xác định vì điều đó sẽ làm tăng ngoại lệ bảng thay đổi. Tôi giả định đó là lý do tại sao bạn đã khai báo trình kích hoạt của mình để sử dụng một giao dịch tự trị (một giao dịch tự trị cho bất kỳ thứ gì khác ngoài việc ghi nhật ký liên tục gần như chắc chắn là một lỗi). Tuy nhiên, nếu bạn làm điều đó, trình kích hoạt của bạn không thể thấy những thay đổi chưa được cam kết được thực hiện bởi giao dịch đang kích hoạt. Đó là vấn đề mà bạn đang gặp phải.

Một giải pháp thay thế sẽ là sử dụng trình kích hoạt kết hợp . Bạn sẽ khai báo một tập hợp test_table.type_%type , bạn sẽ thêm các giá trị đang thay đổi vào tập hợp này trong phần cấp hàng của trình kích hoạt và sau đó bạn sẽ lặp lại các phần tử trong tập hợp trong phần sau câu lệnh của trình kích hoạt. Trình kích hoạt cấp câu lệnh được phép truy vấn bảng mà trên đó trình kích hoạt được xác định để bạn có thể gọi thủ tục của mình từ phần sau câu lệnh của trình kích hoạt phức hợp của bạn.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sử dụng bí danh trong khi một phần của một câu lệnh tình huống trong Oracle SQL

  2. Sử dụng bí danh cột trong tính toán câu lệnh chọn Oracle SQL

  3. Tìm mẫu và bản trình diễn cho một phiên bản JDK cụ thể

  4. Đối tượng bị khóa được tìm thấy trên oracle.jdbc.driver.T4CConnection

  5. Sự khác biệt giữa phép nối băm và phép nối hợp nhất (Oracle RDBMS) là gì?