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 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
| PROCEDURE proc_dates_mois IS
cursor c_calendrier is
select *
from CALENDRIER
where annee=:ENTETE.ANNEE
AND mois=:ENTETE.MOIS;
r_calendrier c_calendrier%ROWTYPE;
v_premier date;
v_dernier varchar2(10);
v_date_dernier number;
v_date number;
v_date_jour date;
v_jour_premier number;
BEGIN
if :entete.mois is not null and :entete.annee is not null then
go_block('DATES');
clear_block;
select to_date('01/'||:entete.mois||'/'||:entete.annee,'DD/MM/YYYY') into v_premier
from dual;
v_dernier := f_date_dernier_jour(:ENTETE.MOIS);
v_date_dernier := v_dernier;
v_jour_premier := to_char(v_premier,'D');
end if;
-- Determination du Jour du 1er du mois : Jour de la semaine sur lequel tombe ler du mois
if v_jour_premier = 1 then :j1 := 1;
elsif v_jour_premier = 2 then :j2 := 1 ;
elsif v_jour_premier = 3 then :j3 := 1 ;
elsif v_jour_premier = 4 then :j4 := 1 ;
elsif v_jour_premier = 5 then :j5 := 1 ;
elsif v_jour_premier = 6 then :j6 := 1 ;
elsif v_jour_premier = 7 then :j7 := 1 ;
end if;
FOR v_date in 2..31
LOOP
if v_jour_premier + v_date - 1 = 2 then :j2 := v_date;
elsif v_jour_premier + v_date - 1 = 3 then :j3 := v_date;
elsif v_jour_premier + v_date - 1 = 4 then :j4 := v_date;
elsif v_jour_premier + v_date - 1 = 5 then :j5 := v_date;
elsif v_jour_premier + v_date - 1 = 6 then :j6 := v_date;
elsif v_jour_premier + v_date - 1 = 7 then :j7 := v_date;
elsif v_jour_premier + v_date - 1 = 8 then :j8 := v_date;
elsif v_jour_premier + v_date - 1 = 9 then :j9 := v_date;
elsif v_jour_premier + v_date - 1 = 10 then :j10 := v_date;
elsif v_jour_premier + v_date - 1 = 11 then :j11 := v_date;
elsif v_jour_premier + v_date - 1 = 12 then :j12 := v_date;
elsif v_jour_premier + v_date - 1 = 13 then :j13 := v_date;
elsif v_jour_premier + v_date - 1 = 14 then :j14 := v_date;
elsif v_jour_premier + v_date - 1 = 15 then :j15 := v_date;
elsif v_jour_premier + v_date - 1 = 16 then :j16 := v_date;
elsif v_jour_premier + v_date - 1 = 17 then :j17 := v_date;
elsif v_jour_premier + v_date - 1 = 18 then :j18 := v_date;
elsif v_jour_premier + v_date - 1 = 19 then :j19 := v_date;
elsif v_jour_premier + v_date - 1 = 20 then :j20 := v_date;
elsif v_jour_premier + v_date - 1 = 21 then :j21 := v_date;
elsif v_jour_premier + v_date - 1 = 22 then :j22 := v_date;
elsif v_jour_premier + v_date - 1 = 23 then :j23 := v_date;
elsif v_jour_premier + v_date - 1 = 24 then :j24 := v_date;
elsif v_jour_premier + v_date - 1 = 25 then :j25 := v_date;
elsif v_jour_premier + v_date - 1 = 26 then :j26 := v_date;
elsif v_jour_premier + v_date - 1 = 27 then :j27 := v_date;
elsif v_jour_premier + v_date - 1 = 28 then :j28 := v_date;
elsif v_jour_premier + v_date - 1 = 29 then :j29 := v_date;
elsif v_jour_premier + v_date - 1 = 30 then :j30 := v_date;
elsif v_jour_premier + v_date - 1 = 31 then :j31 := v_date;
elsif v_jour_premier + v_date - 1 = 32 then :j32 := v_date;
elsif v_jour_premier + v_date - 1 = 33 then :j33 := v_date;
elsif v_jour_premier + v_date - 1 = 34 then :j34 := v_date;
elsif v_jour_premier + v_date - 1 = 35 then :j35 := v_date;
elsif v_jour_premier + v_date - 1 = 36 then :j36 := v_date;
elsif v_jour_premier + v_date - 1 = 37 then :j37 := v_date;
end if;
exit when v_date = to_number(v_date_dernier);
END LOOP;
open c_calendrier;
fetch c_calendrier into r_calendrier;
if c_calendrier%notfound then
insert into CALENDRIER
values (:ENTETE.ANNEE, :ENTETE.MOIS,
:j1,:j2,:j3,:j4,:j5,:j6,:j7,:j8,:j9,:j10,:j11,:j12,:j13,:j14,:j15,:j16,:j17,:j18,:j19,:j20,:j21,:j22,
:j23,:j24,:j25,:j26,:j27,:j28,:j29,:j30,:j31,:j32,:j33,:j34,:j35,:j36,:j37);
commit;
end if;
close c_calendrier;
end; |
Partager