Partage
  • Partager sur Facebook
  • Partager sur Twitter

Erreur dans un trigger en SQL

    10 janvier 2011 à 1:58:20

    Bonjour, ;)
    J'ai un soucis dans la déclaration d'un trigger et je ne trouve malheureusement pas de solution
    Voici mon code source :
    CREATE OR REPLACE TRIGGER tr_HRES 
    BEFORE INSERT OR UPDATE OR DELETE
    ON Reservation
    FOR EACH ROW
    DECLARE
    NewHRes NUMBER;
    HResEns NUMBER;
    BEGIN
    	IF (:old.Nature = 'Cours') THEN
    		SELECT NbHCRes AS HResEns FROM Enseignement WHERE Matiere = :old.Matiere;
    	ELSIF (:old.Nature = 'TD') THEN
    		SELECT NbHTDRes AS HResEns FROM Enseignement WHERE Matiere = :old.Matiere;
    	ELSE
    		SELECT NbHTPRes AS HResEns FROM Enseignement WHERE Matiere = :old.Matiere;
    	END IF;
    	IF INSERTING THEN
    		NewHRes := ((:new.HeureFin - :new.HeureDeb)/24) + HResEns;
    	END IF;
    	IF UPDATING THEN
    		IF (:old.HeureFin - :old.HeureDeb) > (:new.HeureFin - :new.HeureDeb) THEN
    			NewHRes := HResEns - (((:old.HeureFin - :old.HeureDeb) - (:new.HeureFin - :new.HeureDeb))/24);
    		ELSE
    			NewHRes := (((:new.HeureFin - :new.HeureDeb) - (:old.HeureFin - :old.HeureDeb))/24) + HResEns;
    		END IF;
    	END IF;
    	IF DELETING THEN
    		NewHRes := HResEns - ((:old.HeureFin - :old.HeureDeb)/24);
    	END IF;
    	IF (NewHRes < 0) THEN
    		NewHRes := 0;
    	END IF;
    	IF (:new.Nature = 'Cours') THEN
    		UPDATE Enseignement SET NbHCRes=NewHRes WHERE Matiere = :old.Matiere;
    	ELSIF (:new.Nature = 'TD') THEN
    		UPDATE Enseignement SET NbHTDRes=NewHRes WHERE Matiere = :old.Matiere;
    	ELSE 
    		UPDATE Enseignement SET NbHTPRes=NewHRes WHERE Matiere = :old.Matiere;
    	END IF;
    END;
    


    Les erreurs se trouvent au niveau des requêtes ( en haut et en bas )
    Je pense que cela doit être une erreur de syntaxe...
    Detail : ERREUR à la ligne 33 : PL/SQL: SQL Statement ignored



    Merci d'avance du coup de main :)
    • Partager sur Facebook
    • Partager sur Twitter
      10 janvier 2011 à 11:14:40

      C'est du Oracle non ? Bon, je connais pas oracle, mais il me semble qu'on écrit OLD et NEW sans les ":" devant.
      • Partager sur Facebook
      • Partager sur Twitter

      Erreur dans un trigger en SQL

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown