Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak obliczyć zagregowane wiersze, których dotyczy problem, jeśli w moim bloku PLSQL znajduje się wiele zapytań DML?

Możesz rejestrować zliczenia w ogólnej tabeli rejestrowania przy użyciu ogólnej procedury.

Tabela logowania

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

Sekwencja dla identyfikatora

create sequence seq_dml_logs ;

Procedura rejestrowania

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

Blok PL/SQL z 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;
/

Następnie agregacja jest proste.

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

Aby lepiej określić, czy rekordy należą do określonego przebiegu lub partii, możesz dodać kolejną kolumnę w dml_logs o nazwie batch_number . Zaloguj ten numer, aby zidentyfikować unikalne przebiegi Twoich dmls, a Twoje zapytanie, aby uzyskać szczegółowe informacje zagregowane, stanie się znacznie prostsze.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wykonywanie zbiorczych aktualizacji za pomocą procedur składowanych MyBatis i Oracle

  2. Parametr logiczny dla procedury składowanej Oracle

  3. Wprowadzenie do natywnego dynamicznego SQL w bazie danych Oracle

  4. Dynamiczne przestawianie wierszy na kolumny w Oracle

  5. Przepełnienia pól Oracle do SQL2005 DATETIME w SSIS