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
|
Declare pDate date;
pOpenDays number;
Begin
pDate := sysdate;
pOpenDays := 5;
While pOpenDays > 1
Loop
Begin
If (to_char(pDate+1,'DAY','NLS_DATE_LANGUAGE=FRENCH') like 'SAMEDI%')
or (to_char(pDate+1,'DAY','NLS_DATE_LANGUAGE=FRENCH') like 'DIMANCHE%')
or trunc(pDate+1,'DAY') in ( select
scp.SCP_DATE
from pac_schedule_period scp
, pac_schedule sch
where scp.pac_schedule_id=sch.pac_schedule_id
and sch.sce_default=1
and scp.scp_nonworking_day=1
and scp.scp_date is not Null)
Then
pDate := pDate + 1;
Else
pDate := pDate + 1;
pOpenDays := pOpenDays - 1;
End if;
End;
End loop;
dbms_output.put_line(to_char(pDate,'DD/MM/YYYY'));
End; |