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.