1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
|
create or replace PROCEDURE PROC_BDEHISTO AS
v_Periodicite number;
v_table varchar2(50);
v_requete varchar2(2000);
v_verif_purge varchar2(100);
v_cpt number ;
cursor C1 is
select Ltable,periodicite,ldate, ldate2
from histo;
C1r C1%ROWTYPE;
BEGIN
OPEN C1;
FETCH C1 INTO C1r;
-- on parcours la table Histo
while C1%FOUND loop
v_requete:='SELECT COUNT(*) FROM '||C1r.Ltable||'@bdepkg0';
EXECUTE IMMEDIATE v_requete into v_cpt;
DBMS_OUTPUT.PUT_LINE( To_char( v_cpt ) || ' enregistrements') ;
DBMS_OUTPUT.PUT_LINE(C1r.Ltable);
-- si =0 alors il vient d'avoir une purge donc on ne met rien a jour
if v_cpt>0 then
if C1r.ldate is null then
-- on supprime les anciennes saisies
v_requete := 'delete from '|| C1r.Ltable ||' where to_date('|| C1r.ldate ||',''YYYY/MM/DD'') < TO_DATE(TO_CHAR(SYSDATE,''YYYY/MM/DD''),''YYYY/MM/DD'')'; -- And to_date('|| C1r.ldate ||',''YYYY/MM/DD'') > TO_DATE(TO_CHAR((sysdate - ' || C1r.periodicite ||'),''YYYY/MM/DD''),''YYYY/MM/DD'') ';
EXECUTE IMMEDIATE v_requete;
commit;
-- on met à jour BDE Histo
v_requete := 'insert into '|| C1r.Ltable ||' select * from '|| C1r.Ltable ||'@bdepkg0 where to_date('|| C1r.ldate ||',''YYYY/MM/DD'') < TO_DATE(TO_CHAR(SYSDATE,''YYYY/MM/DD''),''YYYY/MM/DD'')'; -- And to_date(DCarton,''YYYY/MM/DD'') > TO_DATE(to_char((sysdate - '|| C1r.periodicite ||'),''YYYY/MM/DD''),''YYYY/MM/DD'')';
EXECUTE IMMEDIATE v_requete;
commit;
elsif c1r.ldate2 is null then
-- on supprime les anciennes saisies
v_requete := 'delete from '|| C1r.Ltable ||' where to_date('|| C1r.ldate ||',''DD/MM/YY'') < TO_DATE(TO_CHAR(SYSDATE,''DD/MM/YY''),''DD/MM/YY'')'; -- And to_date('|| C1r.ldate ||',''YYYY/MM/DD'') > TO_DATE(TO_CHAR((sysdate - ' || C1r.periodicite ||'),''YYYY/MM/DD''),''YYYY/MM/DD'') ';
EXECUTE IMMEDIATE v_requete;
commit;
-- on met à jour BDE Histo
v_requete := 'insert into '|| C1r.Ltable ||' select * from '|| C1r.Ltable ||'@bdepkg0 where to_date('|| C1r.ldate ||',''DD/MM/YY'') < TO_DATE(TO_CHAR(SYSDATE,''DD/MM/YY''),''DD/MM/YY'')'; -- And to_date(DCarton,''YYYY/MM/DD'') > TO_DATE(to_char((sysdate - '|| C1r.periodicite ||'),''YYYY/MM/DD''),''YYYY/MM/DD'')';
EXECUTE IMMEDIATE v_requete;
commit;
dbms_output.put_line(v_requete);
end if;
end if;
FETCH C1 into C1r;
end loop;
CLOSE C1;
END; |
Partager