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 :

trigger me signal une erreur lors de son exécution


Sujet :

SQL Oracle

  1. #1
    Membre du Club Avatar de scofild20
    Inscrit en
    Mars 2007
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 109
    Points : 47
    Points
    47
    Par défaut trigger me signal une erreur lors de son exécution
    bonjour j'ai réaliser un trigger agissant sur une table matiere. lors de l'ajout d'une nouvelle matiere le trigger ajoute la liste des etudiants concerné dans une table note_prof . voila 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
    create or replace trigger liste_note_prof2
      after insert or update or delete on matiere for each row
    declare 
     cursor c_etudiant is select * from etudiant where niveau=:new.niveau ;
     
    etudiant c_etudiant%rowtype;
    begin
    open c_etudiant;
       if inserting or updating Then 
     
     
    for etudiant in c_etudiant loop
        insert into note_prof(id_etudiant,niveau,nom_etudiant,prenom_etudiant,nom_matiere) values (etudiant.id_etudiant,:new.niveau,etudiant.nom_etudiant,etudiant.prenom_etudiant,:new.nom_matiere) ;
    end loop;
    close c_etudiant;
       Elsif deleting Then
                           delete from note_prof where nom_matiere=:old.nom_matiere;
       End if ;
    End;
    /
    et voila l'erreur généré lors de la tentative d'ajout d'une nouvelle matiere :
    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
    SQL> desc matiere;
     Nom                                       NULL ?   Type
     ----------------------------------------- -------- ----------------------
     
     NOM_MATIERE                               NOT NULL VARCHAR2(20)
     NOM_MODULE                                         VARCHAR2(20)
     COEFFICIENT                                        NUMBER(1)
     NIVEAU                                             NUMBER(1)
     
    SQL> insert into matiere  values('informatique','module1',1,1);
    insert into matiere  values('informatique','module1',1,1)
                *
    ERREUR Ó la ligne 1 :
    ORA-06511: PL/SQL : curseur dÚjÓ ouvert
    ORA-06512: Ó "MED.LISTE_NOTE_PROF2", ligne 2
    ORA-06512: Ó "MED.LISTE_NOTE_PROF2", ligne 10
    ORA-04088: erreur lors d'exÚcution du dÚclencheur 'MED.LISTE_NOTE_PROF2'
    ou est la problème svp ?

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Mai 2008
    Messages : 75
    Points : 95
    Points
    95
    Par défaut
    une premiere remarque
    tu n'as pas besoin d'utiliser "open" ou "close" pour ton curseur.
    le curseur s'ouvre ou se ferme implicitement.

  3. #3
    Membre du Club Avatar de scofild20
    Inscrit en
    Mars 2007
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 109
    Points : 47
    Points
    47
    Par défaut
    aparament c'est l'ouverture et la fermeture du curseur qui a causé la problème .
    merci .
    je suis tunisien aussi

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Mai 2008
    Messages : 75
    Points : 95
    Points
    95
    Par défaut
    tres enchanté mon frère

  5. #5
    Membre du Club Avatar de scofild20
    Inscrit en
    Mars 2007
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 109
    Points : 47
    Points
    47
    Par défaut
    bon j'ai cru que le problème est resolu , un autre parait .

    quand je veux mettre a jour un enregistrement de la table note_prof . il me signal mise a jour impossible

  6. #6
    Membre du Club Avatar de scofild20
    Inscrit en
    Mars 2007
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 109
    Points : 47
    Points
    47
    Par défaut
    voila l'erreur
    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> desc note_prof;
     Nom                                       NULL ?   Type
     ----------------------------------------- -------- ----------------------------
     
     ID_ETUDIANT                                        NUMBER(8)
     NOM_ETUDIANT                                       VARCHAR2(20)
     PRENOM_ETUDIANT                                    VARCHAR2(20)
     NOM_MATIERE                                        VARCHAR2(20)
     NIVEAU                                             NUMBER(1)
     NOTE_RECHERCHE                                     NUMBER(2,2)
     NOTE_CONTROLE_CONTINU                              NUMBER(2,2)
     NOTE_DS                                            NUMBER(2,2)
     NOTE_EXAM                                          NUMBER(2,2)
     NOTE_EXAM_CONTROLE                                 NUMBER(2,2)
     
    SQL> update note_prof set note_recherche=11 where id_etudiant=7725699;
    update note_prof set note_recherche=11 where id_etudiant=7725699
                                        *
    ERREUR Ó la ligne 1 :
    ORA-01438: valeur incohÚrente avec la prÚcision indiquÚe pour cette colonne

  7. #7
    Membre du Club Avatar de scofild20
    Inscrit en
    Mars 2007
    Messages
    109
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 109
    Points : 47
    Points
    47
    Par défaut
    bon si je change le type de note_recherche a integer , la mise a jours est validée

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Mai 2008
    Messages : 75
    Points : 95
    Points
    95
    Par défaut
    le probleme reside dans la declaration de la colonne NOTE_RECHERCHE de la table note_prof.
    NOTE_RECHERCHE doit etre de type number tt court ou si jai bien compris number(4,2) ce qui revient a dire 4 chiffres dont 2 apres la virgule.

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

Discussions similaires

  1. Jouer un son suite à une erreur lors d'une saisie
    Par marcel marie dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 10/03/2010, 11h01
  2. [PostgreSQL] [PostGreSQL] Obtention d'une erreur lors de l'exécution d'une requête
    Par cbombabill dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 06/03/2008, 11h56
  3. [ADO.Net][Access] Pourquoi ai-je une erreur lors de l'Update ?
    Par nazimb dans le forum Accès aux données
    Réponses: 1
    Dernier message: 15/05/2006, 09h37
  4. Réponses: 2
    Dernier message: 21/06/2004, 15h55
  5. Réponses: 6
    Dernier message: 27/01/2004, 16h08

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