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

Bagaimana cara mendapatkan jumlah baris yang terpengaruh oleh pernyataan saat berada di dalam pemicu pernyataan itu?

Salah satu caranya adalah dengan menggunakan variabel global untuk melacak jumlah baris karena tidak ada cara lain untuk mendapatkan jumlah baris dari pemicu tingkat pernyataan. Anda kemudian akan membutuhkan tiga pemicu... satu tingkat pernyataan untuk menginisialisasi variabel sebelum pernyataan dijalankan, satu tingkat baris untuk menambahkan satu ke variabel untuk setiap baris, satu tingkat pernyataan untuk menggunakan jumlah baris sesuai keinginan Anda. Pertama, siapkan variabel dan beberapa prosedur untuk membantunya:

create or replace package PKG_ROWCOUNT is
  NUMROWS   number;

  procedure INIT_ROWCOUNT;

  procedure ADD_ONE;

  function GET_ROWCOUNT
    return number;
end PKG_ROWCOUNT;
/

create or replace package body PKG_ROWCOUNT as
  procedure INIT_ROWCOUNT is
  begin
    NUMROWS := 0;
  end;

  procedure ADD_ONE is
  begin
    NUMROWS := Nvl(NUMROWS, 0) + 1;
  end;

  function GET_ROWCOUNT
    return number is
  begin
    return NUMROWS;
  end;
end PKG_ROWCOUNT;
/

Pemicu pertama untuk menginisialisasi variabel:

create or replace trigger CUSTOMER_CHANGES_TRIGGER_1
  before insert or update or delete
  on CUSTOMERS
begin
  PKG_ROWCOUNT.INIT_ROWCOUNT;
end;

Yang kedua diperbarui per baris:

create or replace trigger CUSTOMER_CHANGES_TRIGGER_2
  after insert or update or delete
  on CUSTOMERS
  for each row
begin
  PKG_ROWCOUNT.ADD_ONE;
end;
/

Yang ketiga untuk menampilkan total:

create or replace trigger CUSTOMER_CHANGES_TRIGGER_3
  after insert or update or delete
  on CUSTOMERS
begin
   Dbms_output.
   PUT_LINE(PKG_ROWCOUNT.GET_ROWCOUNT || ' rows were affected.');
end;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pengantar Kursor Ref PL/SQL Di Database Oracle

  2. Bisakah kita memiliki banyak WITH AS dalam satu sql - Oracle SQL

  3. Besar .patch_storage

  4. Cara mengulang daftar yang dibatasi di Oracle PLSQL

  5. Bagaimana cara menggunakan nomor baris?