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
|
CREATE OR REPLACE TRIGGER fermeture_of
AFTER UPDATE OF date_fin_operation ON operation
FOR EACH ROW
WHEN (NEW.id_poste=4)
DECLARE
CURSOR c (d integer) IS
SELECT qte_realisee, qte_a_realiser FROM concerne
WHERE numero_demande=d;
realisee INTEGER;
a_realiser INTEGER;
no_demande INTEGER;
part INTEGER;
BEGIN
SELECT qte_realisee, qte_a_realiser, c.numero_demande, c.partnumber
INTO realisee, a_realiser, no_demande, part
FROM demande d, cycle_ventilateur v, operation o, concerne c
WHERE v.numero_serie_trane=:NEW.numero_serie_trane
AND d.numero_demande=v.numero_demande
AND d.numero_demande=c.numero_demande
AND v.partnumber=c.partnumber;
UPDATE concerne SET qte_realisee=qte_realisee + 1
WHERE numero_demande=no_demande
AND partnumber=part;
FOR d IN c(demande) LOOP
IF d.qte_realisee!=d.qte_a_realiser THEN
GOTO fin;
END IF;
END LOOP;
UPDATE demande SET statut_demande='F'
WHERE numero_demande=no_demande;
<<fin>>
NULL;
END; |