return: text
|
|
lang: plpgsql
|
|
src: |
|
|
DECLARE
|
|
|
|
BEGIN
|
|
INSERT INTO pmsi.t_divers (code, texte, valeur, description)
|
|
SELECT
|
|
'PURGE_IMPORT',
|
|
'Purge des imports (IN,OUT). Nombre d''annees a conserver',
|
|
'99',
|
|
'Purge des imports (IN,OUT). Nombre d''annees a conserver (le dernier mois de chaque annee est conserve)'
|
|
WHERE 'PURGE_IMPORT' NOT IN (SELECT code FROM pmsi.t_divers)
|
|
;
|
|
|
|
DROP TABLE IF EXISTS w_periode;
|
|
CREATE TEMP TABLE w_periode AS
|
|
SELECT date(date_trunc('year',now())-(valeur||' years')::interval+interval '1 year'-interval '1 day') AS date_purge
|
|
FROM pmsi.t_divers
|
|
WHERE code = 'PURGE_IMPORT'
|
|
;
|
|
|
|
ANALYSE w_periode
|
|
;
|
|
|
|
|
|
DELETE FROM pmsi.p_imports
|
|
USING w_periode
|
|
WHERE etat = 'G' AND
|
|
(
|
|
date_fin = '20991231' OR
|
|
date_fin <= date_purge
|
|
) AND
|
|
oid NOT IN (SELECT import_id FROM pmsi.p_rss GROUP BY 1 HAVING count(*) >= 10) AND date_import < date(date_trunc('year',now())-interval '1 year')
|
|
;
|
|
|
|
|
|
DELETE FROM pmsi.p_imports
|
|
USING w_periode
|
|
WHERE etat = 'G' AND
|
|
(
|
|
date_fin = '20991231' OR
|
|
date_fin <= date_purge
|
|
) AND
|
|
oid NOT IN (SELECT import_id FROM pmsi.p_rss GROUP BY 1 )
|
|
;
|
|
|
|
DELETE FROM pmsi.p_imports
|
|
WHERE etat <> 'G' AND
|
|
date_import < date(date_trunc('month',now())-interval '6 month')
|
|
;
|
|
|
|
|
|
DELETE FROM pmsi.p_imports_data
|
|
WHERE import_id NOT IN (SELECT oid FROM pmsi.p_imports)
|
|
;
|
|
DELETE FROM pmsi.p_imports_controles
|
|
WHERE import_id NOT IN (SELECT oid FROM pmsi.p_imports)
|
|
;
|
|
|
|
ANALYSE pmsi.p_imports_controles
|
|
;
|
|
ANALYSE pmsi.p_imports_data
|
|
;
|
|
|
|
RETURN 'OK';
|
|
END;
|