Title: RE: ROWID in statement trigger

> -----Original Message-----
> From: Connor McDonald [mailto:[EMAIL PROTECTED]]
>
> have a package type as a plsql table of rowid
>
> statement-before:
>   plsql_table.delete;
>
> row-after:
>   plsql_table(plsql_table.count+1) := :new.rowid;
>
> statement-after:
>   for i in 1 .. plsql_table.count loop
>      <play with rowids>
>   end loop;


I decided to do a small "proof of concept" of this. Is there another way besides using a "global" package variable? My code follows below.

create package global_vars
as
   type row_tabtype is table of rowid not null index by binary_integer ;
   update_rows row_tabtype ;
end ;
/

create table emp
  (id number, name varchar2 (40)) ;
create table emp_upd_history
  (updated_rowid rowid, updated_date date) ;

create trigger emp_b4u1
before update
on emp
begin
    global_vars.update_rows.delete ;
end ;
/

create trigger emp_b4u2
before update
on emp
for each row
begin
    global_vars.update_rows (global_vars.update_rows.count + 1) := :new.rowid ;
end ;
/

create trigger emp_afu1
after update
on emp
begin
    for i in 1..global_vars.update_rows.count
    loop
       insert into emp_upd_history
          (updated_rowid, updated_date)
        values
          (global_vars.update_rows (i), sysdate) ;
    end loop ;
end ;
/

Reply via email to