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

Oracle Discussion :

Programmtion d'un JOB sauf samedi et dimanche


Sujet :

Oracle

  1. #1
    Membre éclairé
    Inscrit en
    Décembre 2005
    Messages
    455
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 455
    Par défaut Programmtion d'un JOB sauf samedi et dimanche
    Bonjour,

    J'ai programmé une procédure via un job qui s'execute tous les jours sauf samedi et dimanche.
    Je voulais savoir s'il est possible de faire cela dans un job?
    Car pour l'instant je suis obligée de l'interommpre le vendredi soir et de la reprogrammer le lunid matin.
    Je suis sous Orcale 10.
    Merci pour vos réponses.

  2. #2
    Membre Expert
    Avatar de bouyao
    Inscrit en
    Janvier 2005
    Messages
    1 778
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 778
    Par défaut
    Oui tu peut le faire : DBMS_SCHEDULER en créant des fenetres.

  3. #3
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    tu peux en faire 1/jour qui se déclenche chaque semaine

  4. #4
    Membre éclairé
    Inscrit en
    Décembre 2005
    Messages
    455
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 455
    Par défaut
    Citation Envoyé par Fred_D
    tu peux en faire 1/jour qui se déclenche chaque semaine
    c'est à dire?

  5. #5
    Membre chevronné

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 487
    Par défaut
    une solution simple aussi que j'utilise en 9i (on a pas le dbms_schedulee!).

    Mon job execute ma procédure tout les jours.
    Le corps principal de ma procédure ne s'éxécute que si on est en semaine.
    Pour cela, une simple requête sur le jour de semaine te donne le bob résultat.
    Cela peut paraitre bricolage, mais cela marche très bien

  6. #6
    Membre Expert
    Avatar de bouyao
    Inscrit en
    Janvier 2005
    Messages
    1 778
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 778
    Par défaut
    Citation Envoyé par claralavraie
    Bonjour,
    Je suis sous Orcale 10.
    ca sera plus simple avec DBMS_SCHEDULER

    un lien de Jaouad : http://jaouad.developpez.com/datapump/#LVII

  7. #7
    Membre chevronné

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 487
    Par défaut
    Citation Envoyé par bouyao
    ca sera plus simple avec DBMS_SCHEDULER

    un lien de Jaouad : http://jaouad.developpez.com/datapump/#LVII

    Je suis completement d'accord !

  8. #8
    Membre éclairé
    Inscrit en
    Décembre 2005
    Messages
    455
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 455
    Par défaut
    oups je me suis trompée je suis encore sous orcale 9...
    désolée.

  9. #9
    Membre éclairé
    Inscrit en
    Décembre 2005
    Messages
    455
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 455
    Par défaut
    Citation Envoyé par aline
    une solution simple aussi que j'utilise en 9i (on a pas le dbms_schedulee!).

    Mon job execute ma procédure tout les jours.
    Le corps principal de ma procédure ne s'éxécute que si on est en semaine.
    Pour cela, une simple requête sur le jour de semaine te donne le bob résultat.
    Cela peut paraitre bricolage, mais cela marche très bien
    Par exemple, j'appelle ma procédure comme ceci:
    A l'intérieur de ma procédure principal main, je fais une requête sur la date du jour?
    Si elle est différente de 1 et 7 alors j'execute tout sinon je mets null.
    Est ce exact?

  10. #10
    Membre chevronné

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 487
    Par défaut
    Citation Envoyé par claralavraie
    Par exemple, j'appelle ma procédure comme ceci:
    A l'intérieur de ma procédure principal main, je fais une requête sur la date du jour?
    Si elle est différente de 1 et 7 alors j'execute tout sinon je mets null.
    Est ce exact?
    Oui,
    Par contre, il faut faire très attention avec les requetes sur le jour de semaine.
    Le résultat dépend des paramètres locaux du client. ici, si tu fait un job, le client, c'est ton serveur. Le problème est très simple, il faut juste être conscient de ce que l'on fait:

    Je te donne un exemple sur les problèmes potentiels qu'il faut connaitre:
    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
     
    SQL>  alter session set nls_territory=FRANCE;
     
    Session altered
     
    SQL> select to_char(sysdate,'D') from dual;
     
    TO_CHAR(SYSDATE,'D')
    --------------------
    1
     
    SQL>  alter session set nls_territory=america;
     
    Session altered
     
    SQL> select to_char(sysdate,'D') from dual;
     
    TO_CHAR(SYSDATE,'D')
    --------------------
    2

    Perso, je contourne le problème en soustrayant ce résultat avec un dimanche.
    Le nombre de jour entre aujourd'hui et dima,che dernier, c'est 1 et-ce, quelles que soient tes locals settings!

    J'espère que je n'ai pas trop dévié du sujet:

  11. #11
    Membre émérite Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Par défaut
    euuuh moi je ferais juste
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SQL> select to_char(sysdate,'DAY') from dual;
     
    TO_CHAR(
    --------
    LUNDI
    et si c'est 'SAMEDI' ou 'DIMANCHE' (ou dans la langue de la base) ben => Null...

    ou alors j'ai loupé un piège quelque part ?

  12. #12
    Membre chevronné

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 487
    Par défaut
    Citation Envoyé par Yorglaa
    euuuh moi je ferais juste
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SQL> select to_char(sysdate,'DAY') from dual;
     
    TO_CHAR(
    --------
    LUNDI
    et si c'est 'SAMEDI' ou 'DIMANCHE' (ou dans la langue de la base) ben => Null...

    ou alors j'ai loupé un piège quelque part ?
    Bonjour Yorglaa!

    Cela marche si tu es sur de tes locals settings.
    Dans le doute, j'utilise ma solution.
    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
     
    SQL>  alter session set nls_language=FRENCH;
     
    Session altered
     
    SQL> select to_char(sysdate,'DAY') from dual;
     
    TO_CHAR(SYSDATE,'DAY')
    ----------------------
    LUNDI
     
    SQL>  alter session set nls_language=AMERICAN;
     
    Session altered
     
    SQL> select to_char(sysdate,'DAY') from dual;
     
    TO_CHAR(SYSDATE,'DAY')
    ----------------------
    MONDAY

  13. #13
    Rédacteur

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 320
    Par défaut
    Aline ,
    La procedure est stockée sur le serveur SGBDR tout comme le job, donc c'est le setting de la base qui compte

    Même si je préfere ta méthode .

    Pourquoi ne pas créer 5 job que l'on lance le lundi ..vendredi avec un next_date à sysdate+7

  14. #14
    Membre chevronné

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 487
    Par défaut
    Citation Envoyé par Jaouad
    Aline ,
    La procedure est stockée sur le serveur SGBDR tout comme le job, donc c'est le setting de la base qui compte

    Même si je préfere ta méthode .
    Nous sommes d'accord, je l'ai d'ailleurs dit plus haut!

    Citation Envoyé par Jaouad
    Aline ,

    Pourquoi ne pas créer 5 job que l'on lance le lundi ..vendredi avec un next_date à sysdate+7
    Sinon, bien sur, il existe pleins de solutions. J'utilise de manière plus générale souvent cette routine qui nous dit quel jour on est de manière indépendante des settings. Il m'est donc très facile de définir un seul job (je trouve cela d'ailleur plus simple d'avoir un seul job!).

  15. #15
    Membre émérite Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Par défaut
    Certes !
    mais en incluant la solution d'Aline (le Alter Session dans un execute immediate) dans le contrôle, il reste valable sur n'importe quel serveur puisqu'on va le faire sur le Select avec le paramètre NLS mis manuellement...

    c'est bien joué !

  16. #16
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 461
    Par défaut
    Citation Envoyé par Jaouad
    La procedure est stockée sur le serveur SGBDR tout comme le job, donc c'est le setting de la base qui compte
    Que nenni !
    Lorque l'on crée une tâche planifiée (job) via DBMS_JOB.SUBMIT, les paramètres NLS en vigueur dans la session courante sont enregistrés, et stockés dans le champ NLS_ENV de DBA_JOBS.
    Ce sont ces paramètres NLS qui seront appliqués automatiquement à chaque exécution ultérieure de cette tâche.

    Pour ce qui est de la langue d'affichage des jours, on peut fort bien la contrôler directement dans l'appel de TO_CHAR :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SQL> select to_char(sysdate, 'Day', 'nls_date_language=german') from dual;
    
    TO_CHAR(SY
    ----------
    Montag
    
    SQL> select to_char(sysdate, 'Day', 'nls_date_language=french') from dual;
    
    TO_CHAR(
    --------
    Lundi
    De cette manière, on peut si on le souhaite faire des tests sur le libellé des jours, sans avoir à craindre une variation due aux paramètres NLS de la session.

Discussions similaires

  1. Between sans les samedi et dimanche
    Par arthuro45 dans le forum PL/SQL
    Réponses: 12
    Dernier message: 29/02/2012, 14h23
  2. nombre de jour entre deux dates sans compter samedi et dimanch
    Par sihammaster dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 31/10/2011, 17h17
  3. Travail exceptionnel samedi et Dimanche
    Par ionesco dans le forum Juridique
    Réponses: 4
    Dernier message: 24/05/2011, 23h05
  4. Réponses: 2
    Dernier message: 24/05/2011, 16h50
  5. [CR XI] Calcul ne nombre de samedi et dimanche pour une période
    Par 007max31 dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 26/08/2009, 16h07

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