आप एक सामान्य प्रक्रिया का उपयोग करके एक सामान्य लॉगिंग तालिका में गणना लॉग कर सकते हैं।
लॉगिंग टेबल
CREATE TABLE dml_logs (
log_id NUMBER PRIMARY KEY,
step VARCHAR2(200),
row_count NUMBER,
log_date DATE
);
आईडी के लिए अनुक्रम
create sequence seq_dml_logs ;
लॉगिंग प्रक्रिया
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;
/
डीएमएल के साथ पीएल/एसक्यूएल ब्लॉक
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;
/
फिर, एकत्रीकरण सरल है।
select SUM(row_count) FROM dml_logs
where step = ? and log_date = ? -- all the required conditions.
यह बेहतर ढंग से पहचानने के लिए कि रिकॉर्ड किसी विशेष रन या बैच से संबंधित हैं, आप dml_logs
में एक और कॉलम जोड़ सकते हैं batch_number
called कहा जाता है . अपने डीएमएल के अद्वितीय रन की पहचान करने के लिए इस नंबर को लॉग करें और समग्र विवरण प्राप्त करने के लिए आपकी क्वेरी बहुत आसान हो जाती है।