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 Developer Oracle Discussion :

Les déclencheurs [Débutant(e)]


Sujet :

Sql Developer Oracle

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 5
    Par défaut Les déclencheurs
    Bonsoir / bonjour à tous

    J'ai un petit soucis avec les déclencheurs que je ne comprends pas très bien.

    Pour mon cours SGBD, je dois gérer des nageurs qui sont placé dans des catégories selon leurs ages.
    J'ai trois tables :

    - Nageurs (Nrligue, Nom, AnneeNaiss, Categorie)
    - Categories(Categorie, agemin, agemax)
    - Infogeneral (anneeencours)

    J'aimerai que quand on modifie l'année en cours dans la table Infogeneral, que les catégories des nageurs soient automatique mis à jour. j'ai mis un déclencheur dans la table Infogeneral

    Je n'arrive pas à comprendre comment je pourrais faire ça. J'ai essayé avec un curseur (je ne sais pas trop à quoi ça sert mais je me dis que ca peut m'aider à sélectionner un a un les nageurs) et voici le code.

    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
     
    create or replace
    TRIGGER TRGCATEGORIE
    AFTER UPDATE ON INFOGENERALES
    declare 
      annee NUMBER(4,0);
      UneCategorie char(2);
      CURSOR CurNageur is Select * from nageurs;
      UnNageur nageurs%rowtype;
     
    BEGIN
        Select anneeencours into annee
        from infogenerales;
     
        open CurNageur;
        FETCH CurNageur INTO unnageur;
        while CurNageur%Found LOOP
            SELECT categories.categorie into unecategorie
            from categories, nageurs
            where nom = unnageur.nom
            and agemin <= (annee - UnNageur.anneenaiss)
            and agemax >= (annee - UnNageur.anneenaiss);
            update nageurs set categorie = unecategorie where nrligue like unnageur.nrligue;
            FETCH CurNageur into unnageur;
        end loop;
        close CurNageur;
     
    EXCEPTION
      WHEN INVALID_CURSOR
        THEN DBMS_OUTPUT.PUT_LINE('Erreur Curseur CurEmp');
      WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE(SQLERRM);    
    END;

  2. #2
    Membre éclairé
    Profil pro
    Développeur
    Inscrit en
    Janvier 2010
    Messages
    232
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Janvier 2010
    Messages : 232
    Par défaut
    Bonjour ,

    Si tu veux passer par un curseur OK, mais alors mets un curseur for update...mais n'est-ce pas possible de passer directement par un update direct ... essaie

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    update nageur na set categorie = (select categorie from categories where
    agemin <= (annee - na.anneenaiss)
            AND agemax >= (annee - na..anneenaiss);

Discussions similaires

  1. [2008R2] Où se trouvent les déclencheurs dans le catalogue ?
    Par Kropernic dans le forum Administration
    Réponses: 10
    Dernier message: 10/03/2014, 19h29
  2. Réponses: 2
    Dernier message: 12/01/2012, 22h17
  3. Activation de tous les déclencheurs (triggers) de la base
    Par SheikYerbouti dans le forum Contribuez
    Réponses: 0
    Dernier message: 30/12/2011, 14h29
  4. Désactivation de tous les déclencheurs (triggers) de la base
    Par SheikYerbouti dans le forum Contribuez
    Réponses: 0
    Dernier message: 30/12/2011, 14h29

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