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

Làm cách nào để tính tổng các hàng bị ảnh hưởng nếu có Nhiều truy vấn DML trong khối PLSQL của tôi?

Bạn có thể ghi số đếm trong bảng ghi nhật ký chung bằng quy trình chung.

Bảng ghi nhật ký

CREATE TABLE dml_logs (
     log_id      NUMBER PRIMARY KEY,
     step        VARCHAR2(200),
     row_count   NUMBER,
     log_date    DATE
);

Trình tự cho id

create sequence seq_dml_logs ;

Quy trình ghi nhật ký

CREATE OR REPLACE PROCEDURE log_dml (
     p_step        VARCHAR2,
     p_row_count   NUMBER,
     p_log_date    DATE
) IS
     PRAGMA autonomous_transaction;
BEGIN
     INSERT INTO dml_logs (
          log_id,
          step,
          row_count,
          log_date
     ) VALUES (
          seq_dml_logs.NEXTVAL,
          p_step,
          p_row_count,
          p_log_date
     );
     COMMIT;
END;
/

Khối PL / SQL với DML

DECLARE
v_step dml_logs.step%TYPE;
BEGIN

  v_step := 'cust_temp_a_update';
   UPDATE cust_temp_a SET name = 'new_val' WHERE id = 10;

 log_dml(v_step,SQL%ROWCOUNT,SYSDATE);

 v_step := 'cust_temp_b_update';
   UPDATE cust_temp_b SET name = 'new_val' WHERE id = 20;

 log_dml(v_step,SQL%ROWCOUNT,SYSDATE);
END;
/

Sau đó, tổng hợp rất đơn giản.

select SUM(row_count) FROM dml_logs 
where step = ? and log_date = ? -- all the required conditions.

Để xác định rõ hơn rằng các bản ghi thuộc về một lần chạy cụ thể hoặc một đợt, bạn có thể thêm một cột khác trong dml_logs được gọi là batch_number . Ghi lại số này để xác định các lần chạy dmls duy nhất của bạn và truy vấn của bạn để nhận chi tiết tổng hợp trở nên đơn giản hơn nhiều.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Không tìm thấy trình điều khiển phù hợp cho jdbc:oracle:thin:@localhost:1521:XE khi chạy ứng dụng web

  2. EF with oracle - Không thể tìm thấy nhà cung cấp cửa hàng được chỉ định trong cấu hình hoặc không hợp lệ.

  3. Tạo ngày giữa hai ngày

  4. Giới thiệu về tập hợp PL / SQL trong cơ sở dữ liệu Oracle

  5. Thực thi ngay lập tức trong Thủ tục Oracle