Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Cách lấy số hàng bị ảnh hưởng bởi một câu lệnh khi bên trong trình kích hoạt của câu lệnh đó

Một cách là sử dụng biến toàn cục để theo dõi số hàng vì không có cách nào khác để lấy số lượng hàng từ trình kích hoạt cấp câu lệnh. Sau đó, bạn sẽ cần ba trình kích hoạt ... một mức câu lệnh để khởi tạo biến trước khi chạy câu lệnh, một mức hàng để thêm một vào biến cho mỗi hàng, một mức câu lệnh để sử dụng số hàng theo cách bạn muốn. Đầu tiên, hãy thiết lập biến và một số thủ tục để trợ giúp nó:

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

Trình kích hoạt đầu tiên để khởi chạy biến:

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

Thứ hai để cập nhật trên mỗi hàng:

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

Phần thứ ba để hiển thị tổng số:

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. SQL Thiếu dấu ngoặc phải theo thứ tự theo câu lệnh

  2. Chia địa chỉ IPv4 thành 4 số trong Oracle sql

  3. Lược đồ APPLICSYSPUB

  4. ORA-24408:không thể tạo tên nhóm máy chủ duy nhất

  5. Cách cắt ngắn TABLE trong Oracle