Bonjour,

J'ai une table avec les jours fériés. J'ai auddi une date de début et une date de fin.

J'ai créé le code PL/SQL suivant :
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
CREATE OR REPLACE FUNCTION jours_feries(p_date1 IN DATE, p_date2 IN DATE) RETURN NUMBER IS
    l_count NUMBER;
    l_date1 DATE;
    l_date2 DATE;
    CURSOR cur IS SELECT * FROM JR_FERIE;
BEGIN
    /* Déclaration et initialisation séparés. */
    l_count := 0;
    l_date1 := LEAST(p_date1, p_date2);
    l_date2 := GREATEST(p_date1, p_date2);
 
    /* Algorithme */
    WHILE (l_date1 <= l_date2) LOOP
        FOR enr IN cur LOOP
            IF to_char(l_date1, 'DD/MM/YYYY') = to_char(enr.JR_FERIE, 'DD/MM/YYYY') THEN
                l_count := l_count + 1;
            END IF;
        END LOOP;
        l_date1 := l_date1 + 1;
    END LOOP;
 
    /* Retourner le nombre de jours fériés entre la date de début et la date de fin d'action (les incluant) */
    RETURN l_count;
 
END jours_feries;
/
Malheureusement, ma fonction ne fonctionne pas. Si vous avez des idées, n'hésitez pas