CREATE OR REPLACE PROCEDURE CR_TRIGGER(tabl varchar2) is
cursor c_columns is
SELECT column_name,DATA_TYPE,DATA_PRECISION,DATA_SCALE,COLUMN_ID,data_length
FROM USER_TAB_COLUMNS WHERE table_name=upper(tabl)
order by COLUMN_ID;
begin
--dbms_output.put_line('--Пропустить от пользователя ubc !!!');
dbms_output.put_line('CREATE OR REPLACE TRIGGER ubc.'||tabl||'#ARC');
dbms_output.put_line('BEFORE UPDATE OR DELETE on '||tabl||' FOR EACH ROW');
dbms_output.put_line('DECLARE');
dbms_output.put_line('op char(1);');
dbms_output.put_line('BEGIN');
dbms_output.put_line(' if updating THEN');
dbms_output.put_line(' op:=''U'';');
dbms_output.put_line(' ELSE');
dbms_output.put_line(' op:=''D'';');
dbms_output.put_line(' end IF;');
dbms_output.put_line('archiv.ARC_'||tabl||'(op,SYSDATE,');
FOR c_col1 IN c_columns LOOP
dbms_output.put_line(':old.'||c_col1.column_name||',');
end loop;
dbms_output.put_line('USER);');
dbms_output.put_line('END;');
dbms_output.put_line('/');
dbms_output.put_line(' ');
end;
/