return: text lang: plpgsql parameters: p0: type: integer name: i_annee p1: type: boolean name: i_do_analyse default: 'true' src: | DECLARE _lignes_supprimees int; _lignes_supprimees_total int; BEGIN -- Supprime tous les rss antèrieur à une année donnée. -- Supprime d'abord de la table p_rss pour ensuite supprimer tous les séjours qui sont en lien avec celle-ci -- Penser à faire un VACUUM FULL des tables ensuite _lignes_supprimees := 0; _lignes_supprimees_total := 0; IF i_annee < 2000 OR i_annee > date_part('year', CURRENT_DATE) - 1 THEN RETURN 'La année doit se trouver entre le 2000 et ' || date_part('year', CURRENT_DATE) - 1; END IF; RAISE NOTICE 'Suppression des séjours < %', i_annee; RAISE NOTICE '%','Suppression dans la table pmsi.p_rss'; DELETE FROM pmsi.p_rss WHERE mois_sortie < CONCAT(i_annee,00) ; GET DIAGNOSTICS _lignes_supprimees = ROW_COUNT; RAISE NOTICE '% lignes suprimée(s)', _lignes_supprimees; _lignes_supprimees_total = _lignes_supprimees_total + _lignes_supprimees; ANALYSE pmsi.p_rss ; RAISE NOTICE '%','Suppression dans la table pmsi.p_chiffrier'; DELETE FROM pmsi.p_chiffrier WHERE mois < CONCAT(i_annee,00) -- eg. 202100 ; GET DIAGNOSTICS _lignes_supprimees = ROW_COUNT; RAISE NOTICE '% lignes suprimée(s)', _lignes_supprimees; _lignes_supprimees_total = _lignes_supprimees_total + _lignes_supprimees; ANALYSE pmsi.p_chiffrier ; RAISE NOTICE '%','Suppression dans la table pmsi.p_ventilation_um'; DELETE FROM pmsi.p_ventilation_um WHERE annee < i_annee ; GET DIAGNOSTICS _lignes_supprimees = ROW_COUNT; RAISE NOTICE '% lignes suprimée(s)', _lignes_supprimees; _lignes_supprimees_total = _lignes_supprimees_total + _lignes_supprimees; ANALYSE pmsi.p_ventilation_um ; RETURN pmsi.cti_nettoyer_sejours(i_do_analyse, _lignes_supprimees_total); END;