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
| CREATE OR REPLACE PROCEDURE BO.ALIM_PLANAP_ECH_TEST IS
v_duree NUMBER;
BEGIN
EXECUTE IMMEDIATE('TRUNCATE TABLE BO.PLANAP_ECH_TEST');
FOR v_rec IN (
SELECT d.CORG,
d.CCOMPTE,
d.CORG||d.CCOMPTE AS IDCOMPTE,
d.NOBAIL,
decode(length(d.NOBAIL),1,d.CORG||d.CCOMPTE||'0'||d.NOBAIL,d.CORG||d.CCOMPTE||d.NOBAIL) AS IDBAIL,
d.NOPLAN,
d.DSIGN,
d.MTENGAGE,
d.DEFFET,
d.DCLOTURE,
d.CMODPLAN,
p.DDEB,
p.DFIN,
p.NB
FROM DOSPLAN@DB_EELOGI d, PLANRAT@DB_EELOGI p
WHERE d.CORG = p.CORG AND d.CCOMPTE = p.CCOMPTE AND d.NOBAIL = p.NOBAIL AND d.NOPLAN = p.NOPLAN
ORDER BY CORG,CCOMPTE,NOBAIL,NOPLAN
)
LOOP
v_duree := months_between(last_day(v_rec.DFIN),last_day(v_rec.DDEB))+1;
FOR i IN 1..v_duree LOOP
INSERT INTO BO.PLANAP_ECH_TEST
VALUES (
v_rec.CORG,
v_rec.CCOMPTE,
v_rec.IDCOMPTE,
v_rec.NOBAIL,
v_rec.IDBAIL,
v_rec.NOPLAN,
v_rec.DSIGN,
v_rec.MTENGAGE,
v_rec.DEFFET,
v_rec.DCLOTURE,
last_day(add_months(v_rec.DDEB,i)-1),
to_number(to_char(last_day(add_months(v_rec.DDEB,i)-1),'yyyy')),
to_number(to_char(last_day(add_months(v_rec.DDEB,i)-1),'mm')),
v_rec.NB * (months_between(last_day(add_months(v_rec.DDEB,i)-1),last_day(v_rec.DDEB))+1),
v_rec.MTENGAGE-(v_rec.NB * (months_between(last_day(add_months(v_rec.DDEB,i)-1),last_day(v_rec.DDEB))+1)),
v_rec.NB,
v_rec.CMODPLAN );
END LOOP;
END LOOP;
COMMIT;
END;
/ |
Partager