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;