IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PL/SQL Oracle Discussion :

fonction jours fériés prolèmes


Sujet :

PL/SQL Oracle

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Octobre 2012
    Messages : 43
    Par défaut fonction jours fériés prolèmes
    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

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 952
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 952
    Par défaut
    Il faut faire plus de SQL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    CREATE OR REPLACE FUNCTION jours_feries(p_date1 IN DATE, p_date2 IN DATE) RETURN NUMBER IS
        l_count NUMBER;
    BEGIN
     
        select count(*) into l_count
          from jr_ferie
         where jr_ferie >= trunc(LEAST(p_date1, p_date2))
           and jr_ferie  < trunc(GREATEST(p_date1, p_date2))+1
     
        /* 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;
    /
    La colonne jr_ferie porte le même nom que la table ?

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Octobre 2012
    Messages : 43
    Par défaut
    Citation Envoyé par skuatamad Voir le message
    Il faut faire plus de SQL :
    La colonne jr_ferie porte le même nom que la table ?
    Oui, il n'y a d'ailleurs que cette colonne dans la table.

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Octobre 2012
    Messages : 43
    Par défaut
    Citation Envoyé par skuatamad Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    CREATE OR REPLACE FUNCTION jours_feries(p_date1 IN DATE, p_date2 IN DATE) RETURN NUMBER IS
        l_count NUMBER;
    BEGIN
     
        select count(*) into l_count
          from jr_ferie
         where jr_ferie >= trunc(LEAST(p_date1, p_date2))
           and jr_ferie  < trunc(GREATEST(p_date1, p_date2))+1
     
        /* 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;
    /
    On est sur la voie : pour l'instant, l_count renvoie bien 1 jour si la date de début est la veille du jour férié (exemple : si la date de début est le 10 novembre, l_count prend 1 (le 11 novembre est bien férié). Or, j'ai une date de début au 15 décembre avec une date de fin au 28, mais ça ne prend pas le 25 décembre qui est férié.

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Octobre 2012
    Messages : 43
    Par défaut
    Hum en fait c'est bon, c'est juste que j'ai pas fais gaffe mais le 24 décembre 2011 n'étais pas dans ma base, autrement ça marche.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. fonction calcul jours fériés
    Par Daniel MOREAU dans le forum Développement
    Réponses: 1
    Dernier message: 25/11/2009, 09h48
  2. Fonction jour férié
    Par Akusa dans le forum Développement
    Réponses: 1
    Dernier message: 29/07/2009, 20h21
  3. appel de fonction créée pour les jours fériés?
    Par novice06 dans le forum VBA Access
    Réponses: 1
    Dernier message: 27/03/2009, 10h11
  4. Réponses: 6
    Dernier message: 14/09/2008, 15h41
  5. Réponses: 1
    Dernier message: 05/02/2008, 14h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo