Oracle
 sql >> база данни >  >> RDS >> Oracle

Как мога да изчисля обобщените засегнати редове, ако има множество DML заявки в моя PLSQL блок?

Можете да регистрирате преброяването в обща регистрационна таблица, като използвате обща процедура.

Регистрираща таблица

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

Последователност за id

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;
/

PL/SQL блок с 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;
/

След това, обединяване е проста.

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

За да идентифицирате по-добре, че записите принадлежат към конкретен цикъл или партида, можете да добавите друга колона в dml_logs наречен batch_number . Запишете този номер, за да идентифицирате уникални изпълнения на вашите dml и вашата заявка, за да получите обобщените подробности, става много по-проста.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle SQL Намиране на 5-те най-ниски заплати

  2. C# NHibernate &Oracle управляван клиент

  3. JDBC драйвер за Oracle 10G XE

  4. Винаги ли 'Select' подрежда по първичен ключ?

  5. как да създадете таблица в oracle