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 61 62 63 64 65 66 67 68 69 70
|
DECLARE
-- Déclaration Curseurs
CURSOR Cur_1 IS
SELECT NUMV,
NUMP,
NUMC,
livres
FROM CONT WHERE NUMV IN (A,B,C)
for update of livres;
rec_1 Cur_1%ROWTYPE;
CURSOR Cur_2 (NV CONT.NUMV%TYPE, NP CONT.NUMP%TYPE, NC CONT.NUMC%TYPE) IS
SELECT
c.NUMV,
c.NUMP,
c.NUMC,
c.livres
FROM cont c,
version v,
pers p,
isef f
WHERE
c.NUMV IN (81,85,90) AND
c.NUMV = NV AND
v.NUMV = NV AND
p.NUMV = NV AND
p.pers = NP AND
c.sef = f.sef AND
c.actif= 'O' AND
f.fct <> 'AG' AND
f.fct <> 'PG' AND
f.fcti <> 'OP' AND
--- and
....;
rec_2 Cur_2%ROWTYPE;
BEGIN
FOR rec_1 IN Cur_1 LOOP
FOR rec_2 IN Cur_2(rec_1.NUMV,rec_1.NUMP,rec_1.NUMC)
LOOP
UPDATE CONT SET LIVRES = 'Y'
WHERE current of cur_1;
END LOOP;
END LOOP;
UPDATE CONT a
SET a.LIVRES = 'N'
where not exists (select 1
FROM version v,
pers p,
isef f
WHERE
a.NUMV IN (81,85,90) AND
a.NUMV = NV AND
v.NUMV = NV AND
p.NUMV = NV AND
p.pers = NP AND
a.sef = f.sef AND
a.actif= 'O' AND
f.fct <> 'AG' AND
f.fct <> 'PG' AND
f.fcti <> 'OP' AND
--- and
....);
COMMIT
END; |
Partager