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 :

Insérer une nouvelle ligne chaque lundi


Sujet :

PL/SQL Oracle

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 7
    Points : 6
    Points
    6
    Par défaut Insérer une nouvelle ligne chaque lundi
    Bonjour tous,

    comme faire ? Je connais les trigger, mais ça ne semble pas compatible, car cet événement n'est ni avant ni après une commande sql. Je suis dans le flou total.

    Cordialement.
    Enkvist.

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2008
    Messages : 16
    Points : 16
    Points
    16
    Par défaut
    Je ne maîtrise pas le sujet mais : la fonction submit du package dbms_job permet de gérer un petit scheduler interne à Oracle.

    Il y a des spécialistes comme Jaouad qui pourront certainement venir t'éclairer.

  3. #3
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Par défaut
    Version d'Oracle ?
    Un problème sans solution est un problème mal posé

    Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    178
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 178
    Points : 220
    Points
    220
    Par défaut
    Il vaut mieux utiliser DBMS_Scheduler.

    D'abord créer un Schedule qui indique la date de début, la périodicité, la date de fin :

    http://download.oracle.com/docs/cd/B...d.htm#i1010076

    Ensuite créer un job qui utilise ce Schedule (2e méthode) :

    http://download.oracle.com/docs/cd/B...d.htm#i1000363

    HTH

  5. #5
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Par défaut
    Citation Envoyé par rbaraer Voir le message
    Il vaut mieux utiliser DBMS_Scheduler.
    A condition que Enkvist soit en Oracle 10 ou supérieur, d'où l'intérêt de toujours préciser la version
    Un problème sans solution est un problème mal posé

    Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Bonjour,

    j'utilise la 10g r2. Le système permet donc l'utilisation de DBMS_SCHEDULER, chose que je ne connais pas du tout. Je vais donc m'y plonger, merci à vous pour la piste.

    Cordialement.
    Enkvist.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Il y a aussi la possibilité de lancer un script SQL chaque lundi par le biais de la CRONTAB ou d'une tâche cédulée.
    C'est une question de goût, soit par l'os, soit par la bd...

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Salut,

    alors j'ai fait un script, que je vous montre tantôt :

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    begin
    dbms_scheduler.create_schedule
     (schedule_name 		=> 'Every_Mon_1AM',
      start_date		=> SYSTIMESTAMP,
      repeat_interval		=> 'FREQ=WEEKLY; BYDAY=MON; BYHOUR=1;',
      comments			=> 'Run at 1am on every monday'
    );
    end;
     
     
    begin
    dbms_scheduler.create_program 
     (program_name		=> 'INSERT_INTO_CRAH',
      program_type		=> 'STORED_PROCEDURE',
      program_action		=> 'inserer_ligne_vierge_dans_CRAH_VALIDATION',
      enabled			=> true,
      comments			=> 'Lance la procédure dinsertion dun nouveau crah'
      );
    end;
     
    create or replace procedure inserer_ligne_vierge_dans_CRAH_VALIDATION
     (
        -- curseur de tous les id_utilisateurS
        Cursor C_ID_UTILISATEUR is
        Select ID_UTILISATEUR from UTILISATEURS ;
     
        -- variable contenant un id_utilisateur
        Userid UTILISATEURS.ID_UTILISATEUR%Type;
     )
    Begin
        Open C_ID_UTILISATEUR ;
        Loop
    	Fetch C_ID_UTILISATEUR into Userid ;
     
    	Exit when C_ID_UTILISATEUR not found;
     
    	-- insertion d'un nouveau crah avec la date du jour et l'utilisateur actuel du curseur
    	Insert into CRAH (ID_CRAH, DATE_CRAH, ID_UTILISATEUR) values (,SYSDATE, Userid);
     
    	-- récup de l'ID_CRAH dernièrement inséré dans la table CRAH (donc le plus grand)
    	Select max(ID_CRAH) into Documentid from CRAH;
     
    	-- insertion d'une ligne dans la table de validation de l'état initial du CRAH
    	Insert into VALIDATION (VALID_INTERV, VALID_MANAG, VALID_COMPTA, VALID_FINALE, DOC_ID) values                (0, 0, 0, 0, Documentid);
     
        End Loop;
        Close C_ID_UTILISATEUR
     
    end;

    Mais j'ai encore un soucis ! A part le fait que je n'ai pas testé, je me demandais, où sont stockés ces schedulers et jobs ? Quelle est la logique de fonctionnement ? Si quelqu'un pourrait me répondre, j'en serais enchanté. Cela serait très précieux pour moi.


    Cordialement.

Discussions similaires

  1. Ajouter une nouvelle ligne à chaque saisie de données
    Par etincelle01 dans le forum Langage
    Réponses: 5
    Dernier message: 09/05/2010, 19h32
  2. [AC-2003] Insérer une nouvelle ligne
    Par denisw95 dans le forum IHM
    Réponses: 1
    Dernier message: 10/04/2009, 18h04
  3. insérer une nouvelle ligne suite à une saisie
    Par jetset30 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 10/02/2009, 08h32
  4. Réponses: 2
    Dernier message: 06/02/2007, 09h17
  5. Réponses: 2
    Dernier message: 07/12/2005, 16h26

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