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 :

Erreur à la compilation d'un trigger composé [11g]


Sujet :

PL/SQL Oracle

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 3
    Points : 6
    Points
    6
    Par défaut Erreur à la compilation d'un trigger composé
    Bonjour tout le monde,

    je dois créer un déclencheur composé qui permet de gérer les tables mutantes.

    Voici mon code, actuellement:

    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
     
    CREATE OR REPLACE TRIGGER LimitEtudGroupes FOR INSERT OR UPDATE ON Parcours_HE
    COMPOUND TRIGGER
    	TYPE ArrayOfRowid IS TABLE OF ROWID INDEX BY BINARY_INTEGER;
    	t_newRowids ArrayOfRowids;
      v_NbreEtudiants INT;
      i NUMBER;
    	BEFORE STATEMENT IS
    	BEGIN
    		t_newRowids.DELETE;
    	END BEFORE STATEMENT;
    	AFTER EACH ROW IS
    	BEGIN
    		t_newRowids(t_newRowids.COUNT + 1) := :NEW.ROWID;
    	END AFTER EACH ROW;
    	AFTER STATEMENT IS
    	BEGIN
    		E_MaxEtudiants EXCEPTION;
    		FOR i IN t_newRowids.FIRST.. t_newRowids.LAST LOOP
    			SELECT COUNT(*) INTO v_NbreEtudiants
    			FROM Parcours_HE
    			WHERE ROWID = t_newRowids(i)
    			AND Refgroupe = t_newRowids(i).Refgroupe
    			AND Ansco = t_newRowids(i).Ansco
    			AND Refformdet = t_newRowids(i).Refformdet
    			AND Annetud = t_newRowids(i).Annetud
    			AND Refimplan = t_newRowids(i).Refimplan;
          IF(v_NbreEtudiants >= 25) THEN
            RAISE E_MaxEtudiants;
          END IF;
    		END LOOP;
    	EXCEPTION
    		WHEN E_MaxEtudiants THEN RAISE_APPLICATION_ERROR(-20001, 'Le nombre maximum d''etudiants est depasse pour le groupe ' || :NEW.Refgroupe || ' et l''annee ' || :NEW.Ansco);
    	END AFTER STATEMENT;
    END LimitEtudGroupes;
    Malheureusement, à la compilation, j'ai ce message d'erreur:

    Erreur(19,18): PLS-00103: Encountered the symbol "EXCEPTION" when expecting one of the following: := . ( @ % ; The symbol "EXCEPTION" was ignored.
    et je ne vois pas ce qui fait planter la compilation ... Quelqu'un pourrait-il m'éclaire s'il vous plait ?

    Aussi, est-ce que la requête dans ma boucle FOR est correcte ? J'entends par là, dois-je faire le "WHERE ROWID = t_newRowids(i)" ? Et est-ce que les différents "t_newRowids(i).QuelqueChose" se font de cette façon ? Ou bien je peux accéder à ces valeurs différemment ?

    Merci d'avance

  2. #2
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Citation Envoyé par Guiss Voir le message
    et je ne vois pas ce qui fait planter la compilation ...
    Voilà un indice
    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
     
    Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 
    Connected as mni
     
    SQL> 
    SQL> begin
      2   e exception;
      3  end;
      4  /
     
    begin
     e exception;
    end;
     
    ORA-06550: Ligne 3, colonne 4 :
    PLS-00103: Symbole "EXCEPTION" rencontré à la place d'un des symboles suivants :
     
       := . ( @ % ;
    Symbole "EXCEPTION" n'a pas été pris en compte.
     
    SQL>

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

Discussions similaires

  1. [Trigger]Erreur de Compilation
    Par Knarf64 dans le forum PL/SQL
    Réponses: 7
    Dernier message: 10/10/2009, 19h30
  2. erreur lors de la compilation d'un trigger
    Par scofild20 dans le forum SQL
    Réponses: 2
    Dernier message: 27/04/2009, 01h04
  3. Réponses: 4
    Dernier message: 03/09/2008, 01h44
  4. Réponses: 5
    Dernier message: 25/04/2006, 01h02
  5. [10g] Trigger erreur de compilation
    Par flasomm dans le forum Oracle
    Réponses: 2
    Dernier message: 03/01/2006, 03h07

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