CREATE OR REPLACE PROCEDURE CR_ARC_TABLES(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
-- создание архивной таблицы в схеме Archiv
dbms_output.put_line('--Пропустить от пользователя Archiv !!!');
dbms_output.put_line('CREATE TABLE archiv.'||tabl||'_ARC(');
dbms_output.put_line('OPER CHAR(1),');
dbms_output.put_line('D_ARC DATE,');
FOR c_col IN c_columns LOOP
if c_col.data_type<>'DATE' then
dbms_output.put_line(c_col.column_name||' '||c_col.data_type||' ('||
nvl(c_col.data_precision,c_col.data_length)||'),');
else
dbms_output.put_line(c_col.column_name||' '||c_col.data_type||',');
end if;
end loop;
dbms_output.put_line('ID_USER_ARC VARCHAR2 (31));');
dbms_output.put_line(' ');
-- создание процедуры архивирования в схеме Archiv
dbms_output.put_line('CREATE OR REPLACE PROCEDURE ARC_'||tabl||'(');
dbms_output.put_line('OPER CHAR, D_ARC DATE,');
FOR c_col IN c_columns LOOP
dbms_output.put_line(c_col.column_name||' '||c_col.data_type||',');
end loop;
dbms_output.put_line('ID_USER_ARC VARCHAR2 ) is ');
dbms_output.put_line('BEGIN');
dbms_output.put_line('INSERT INTO '||tabl||'_ARC VALUES (OPER, D_ARC,');
FOR c_col IN c_columns LOOP
dbms_output.put_line(c_col.column_name||',');
end loop;
dbms_output.put_line('user);');
dbms_output.put_line('end;');
dbms_output.put_line('/');
dbms_output.put_line(' ');
end;
/
Хостинг от uCoz