Bonjour,

Je ne parviens pas à trouver de solutions pour pouvoir effectuer cette requête:
(le problème étant que l'on de peut pas exécuter de requêtes dans un if)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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;
Le problème étant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
 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)
J'ai vu plusieurs solutions dont l'utilisation d'une autre boucle for qui est l'équivalent de in, ou de fetch mais je n'ai pas du tout compris comment cela fonctionne.
Auriez vous d'autres idées?

Merci
Bonne journée