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

SQL Oracle Discussion :

evenement sous oracle


Sujet :

SQL Oracle

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 89
    Points : 47
    Points
    47
    Par défaut evenement sous oracle
    Bonjour,
    je veux créer un évenemnt qui se déclanche tous les jours pour inserer une ligne dans une table. j'ai essayé avec le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    CREATE EVENT e_daily
        ON SCHEDULE
          EVERY 1 DAY
        COMMENT 'Insertion dans la table nb_connectés'
        DO
          BEGIN
            INSERT INTO test values(to_char(sysdate,'YYYY-MM-DD'),'0');
          END
    mais je crois que cette fonction nécessite oracle 10g tandisque j'utilise oracle 9i.
    y'a t il une solution sous oracle 9i?
    merci d'avance

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075

  3. #3
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 89
    Points : 47
    Points
    47
    Par défaut
    j'ai écrit la procedure suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    CREATE OR REPLACE PROCEDURE insert_test
    IS
     
    test_job number;
     
    BEGIN
     
    dbms_job.submit(test_job,'BEGIN INSERT INTO test values(to_char(sysdate,''YYYY-MM-DD''),0); commit;END;', trunc(sysdate) + 1 + 9/24, ' trunc(sysdate) + 1 + 9/24
    ');
    dbms_job.run(test_job, false);
     
    END;
    /
    ma question est : est-ce que cette procedure va se déclancher automatiquement tout les jours à 9 heures ? ou bien c'est necessaire que je l'excute manuellemnt avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    EXECUTE insert_test;
    merci d'avance

  4. #4
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 460
    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 460
    Points : 8 077
    Points
    8 077
    Par défaut
    Citation Envoyé par wided_instm Voir le message
    ma question est : est-ce que cette procedure va se déclancher automatiquement tout les jours à 9 heures ?
    L'intérêt de DBMS_JOB, c'est d'exécuter une tâche périodiquement de manière automatique.
    Pour ça, il faut que
    • JOB_QUEUE_PROCESSES soit supérieur à 0
    • vous ayez défini la tâche à l'aide de la procédure DBMS_JOB.SUBMIT


    Vous n'avez pas besoin d'appeler manuellement DBMS_JOB.RUN, sinon ça n'aurait aucun intérêt !

  5. #5
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 89
    Points : 47
    Points
    47
    Par défaut
    bonjour,
    j'ai vérifié que JOB_QUEUE_PROCESSES=10
    mais la procédure ne s'est pas exécutée automatiquement à l'heure indiquée!
    en plus, si je fais l'appel de la procédure via sql+ l'insertion se fait directement meme si l'heure n'est pas la meme heure indiquée dans la procédure.
    le probleme peut etre est due à quoi?
    merci d'avance

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    relis l'article que j'ai donné

  7. #7
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 89
    Points : 47
    Points
    47
    Par défaut
    le document dit que la procedure run permet de lancer "à la main" le job.

    j'ai supprimer de mon code la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    dbms_job.run(test_job, false);
    j'espère que ma procedure va se lancer automatiquement maintenant

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075

  9. #9
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 89
    Points : 47
    Points
    47
    Par défaut
    j'ai bien reagrdé le document
    et j'ai le résultat suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    SQL> select job , what, next_date from user_jobs  ;
     
           JOB
    ----------
    WHAT
    --------------------------------------------------------------------------------
    NEXT_DATE
    -------------------
             6
    BEGIN INSERT INTO nb_connectes values(to_char(sysdate,'YYYY-MM-DD'),0); commit;E
    ND;
    29/11/2007 11:00:00
    et j'ai comme date courante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    SQL> select sysdate from nb_connectes;
     
    SYSDATE
    -------------------
    29/11/2007 11:08:20
    et l'insertion n'est pas encore faite!!

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    donne tous les éléments pour qu'on reproduise le test STP

  11. #11
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 89
    Points : 47
    Points
    47
    Par défaut
    j'ai pas compris de quels elements vous avez besoin?
    la procedure que j'ai ecrit est la suivante:
    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 PROCEDURE update_connectes
    IS
     
    test_job number;
     
    BEGIN
     
    dbms_job.submit(test_job,'BEGIN INSERT INTO nb_connectes values(to_char(sysdate,''YYYY-MM-DD''),0); commit;END;', trunc(sysdate)  + 11/24, ' trunc(sysdate) + 11/24
    ');
     
    END;
    /

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    comment tu exécutes la procédure par exemple et si tu as changé l'interval ou la next date

  13. #13
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 89
    Points : 47
    Points
    47
    Par défaut
    je n'arrive pas à vous comprendre!!
    c'est la premiere fois que j'utilise ce type de procedures.
    pouvez-vous me donner des réponses plus claires SVP

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    Je veux TOUTES les commandes que tu as exécutées pour faire ton test

  15. #15
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 89
    Points : 47
    Points
    47
    Par défaut
    j'ai crée la procedure
    puis j'ai fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EXECUTE update_connectes;
    ensuite j'ai fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     alter session set NLS_DATE_FORMAT='DD/MM/YYYY HH24:MI:SS' ;
    c'est tout ce que j'ai fait

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    il manque un commit après le EXECUTE surement

  17. #17
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 89
    Points : 47
    Points
    47
    Par défaut
    ce n'est pas du tout à cause du commit car j'ai fait le commit dés le début et ça pas marché!!
    je vai refaire tout dés le début

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    non, tu n'as pas de commit APRES dbms_job.submit

  19. #19
    Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 89
    Points : 47
    Points
    47
    Par défaut
    si j'ai fait un commit aprés et ça pas marché.
    j'ai tout recommencé j'ai supprimé le job et la procédure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    exec DBMS_JOB.REMOVE(3) ;
    puis j'ai crée ma procédure de nouveau:
    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 PROCEDURE update_connectes 
    IS
     
    test_job number;
     
    BEGIN
     
    dbms_job.submit(test_job,'INSERT INTO nb_connectes values(to_char(sysdate,''YYYY-MM-DD''),0);', trunc(sysdate) + 13/24, ' trunc(sysdate)+ 13/24
    ');
    commit;
     
    END;
    puis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EXECUTE update_connectes;commit;
    mais aucune ligne n'est encore insérée dans ma table!!
    mais maintenant la date a augmenté sans que je la change!!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    SQL> select job , what, next_date from user_jobs  ;
     
           JOB
    ----------
    WHAT
    -------------------------------------------------------------------
    NEXT_DATE
    -------------------
            12
    INSERT INTO nb_connectes values(to_char(sysdate,'YYYY-MM-DD'),0);
    29/11/2007 14:43:13
    ce que j'ai compris c'est que le job est encore dans la file d'attente.
    mais je sais pas quand il va s'exécuter!!

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    je ne sais pas comment tu te débrouilles... j'ai fait :
    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
    declare
    test_job number;
    BEGIN
    dbms_job.submit(test_job,'INSERT INTO nb_connectes values(to_char(sysdate,''YYYY-MM-DD''),0);'
               , sysdate + 10/24/3600
                    , 'sysdate+ 1/24/60');
    commit;
    end;
    /
     
    PL/SQL procedure successfully completed.
     
    SQL>commit;
     
    Commit complete.
    et toutes les minutes (1/24/60 ajouté à SYSDATE) j'ai bien une ligne insérée

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. gestion des evenements sous oracle 10g/11g
    Par debutant90 dans le forum Débuter
    Réponses: 1
    Dernier message: 27/02/2008, 11h20
  2. Pas de JOIN sous Oracle (vraiment dommage...)
    Par Isildur dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/03/2007, 11h28
  3. Cryptage de colonnes sous Oracle
    Par Julian Roblin dans le forum SQL
    Réponses: 9
    Dernier message: 28/11/2006, 18h24
  4. LOCATE sous Oracle 8
    Par SubZero2 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 28/05/2004, 13h47
  5. Recherche de texte dans un blob sous oracle
    Par nesbla dans le forum Bases de données
    Réponses: 5
    Dernier message: 25/05/2004, 11h11

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