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

Oracle 11g:Trong PL / SQL có cách nào để lấy thông tin về các hàng được chèn và cập nhật sau câu lệnh MERGE DML không?

Không có một cách tích hợp nào để có được số lượt chèn và cập nhật riêng biệt, không. SQL%ROWCOUNT sẽ cho bạn biết số hàng được hợp nhất, như bạn có thể đã biết, nhưng không có giá trị tương đương để nhận các giá trị riêng biệt cho các lần chèn và cập nhật.

Bài viết này của Adrian Billington cho thấy một cách để lấy thông tin bằng cách bao gồm một lệnh gọi hàm trong hợp nhất, điều này có thể thêm một chút chi phí.

Có một thủ thuật tương tự, và có lẽ đơn giản hơn, từ MichaelS trên diễn đàn Oracle , tất nhiên là tôi cũng không thể nhận được chút tín dụng nào. Tôi muốn tạo lại nó ở đây nhưng tôi không chắc liệu điều đó có được phép hay không, nhưng về cơ bản nó đang sử dụng sys_context để duy trì số lượng, giống như cách mà giải pháp của Adrian đã làm với một biến gói. Tôi muốn sử dụng cái đó, vì nó sạch hơn và tôi nghĩ dễ theo dõi và bảo trì hơn.

Vẫn còn nguy hiểm gần với một câu trả lời chỉ có liên kết nhưng tôi cũng không muốn ăn cắp ý tưởng của người khác ...



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nhận kế hoạch thực thi thực tế trong Oracle 11g

  2. ORA-00933:Lệnh SQL không kết thúc đúng cách khi chèn nhiều hàng

  3. Quy trình làm việc và thời gian chờ thông báo thay đổi dữ liệu của Oracle

  4. Làm thế nào để bạn làm việc trên các gói Oracle trong một môi trường hợp tác, được kiểm soát bởi phiên bản?

  5. Làm cách nào để lấy COUNT (col) ... GROUP BY để sử dụng chỉ mục?