1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| DROP FUNCTION clean_mesure();
CREATE OR REPLACE FUNCTION clean_mesure() RETURNS void AS '
DECLARE
tmp RECORD;
res RECORD;
valeurs RECORD;
-- ou encore
-- valeurs mesure%ROWTYPE;
BEGIN
FOR valeurs IN SELECT * FROM mesure WHERE EXTRACT(day FROM current_timestamp-date)<=1 LOOP
SELECT INTO res count(carte) FROM archive WHERE carte=valeurs.carte AND date=date(valeurs.date);
IF res.count = 0 THEN
INSERT INTO acrhive VALUES (date(tmp.date),valeurs.carte,tmp.valeurs);
ELSE
UPDATE archive SET valeurs[1]=valeurs[1]+tmp.valeurs[1],valeurs[2]=valeurs[2]+tmp.valeurs[2],
valeurs[3]=valeurs[3]+tmp.mesures[3],valeurs[4]=valeurs[4]+tmp.mesures[4],
valeurs[5]=valeurs[5]+tmp.mesures[5],valeurs[6]=valeurs[6]+tmp.mesures[6]
WHERE carte=valeurs.carte AND date=date(valeurs.date);
END IF;
END LOOP;
RETURN NULL;
END;'
LANGUAGE 'plpgsql'; |
Partager