Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Bagaimana saya bisa menghitung baris yang terpengaruh agregat jika ada beberapa kueri DML di blok PLSQL saya?

Anda dapat mencatat jumlah dalam tabel logging umum menggunakan prosedur umum.

Tabel pencatatan

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

Urutan untuk id

create sequence seq_dml_logs ;

Prosedur pencatatan

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

Kemudian, agregasi sederhana.

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

Untuk mengidentifikasi dengan lebih baik bahwa catatan tersebut milik run atau batch tertentu, Anda dapat menambahkan kolom lain di dml_logs disebut batch_number . Catat nomor ini untuk mengidentifikasi proses unik dml Anda dan kueri Anda untuk mendapatkan detail agregat menjadi lebih sederhana.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mendeklarasikan Variabel Sementara di Oracle Database

  2. Python-Parsing SQL menggunakan pyparsing

  3. Nama kolom SQL sama dengan nama variabel PL/SQL - Bagaimana ini bisa dilakukan dalam pernyataan pilih?

  4. Bagaimana cara menentukan tipe database untuk koneksi JDBC yang diberikan?

  5. Tipe data angka muncul sebagai # di SQL Plus