MySQL Forums
Forum List  »  French

Re: Php Admin Trigger bloc if then
Posted by: Jean Molliné
Date: May 11, 2012 01:54AM

Normal, il manque un « ; » à la fin de l'instruction « FETCH curs INTO temp »

Ceci dit, je doute que ça fonctionne de toutes façons puisque le curseur n'est jamais ouvert et qu'ensuite aucune boucle n'est initialisée pour traiter chaque ligne du curseur ni de condition d'arrêt.

Remis un peu en forme, ce trigger devrait davantage ressembler à ceci :
CREATE TRIGGER AJOUT BEFORE INSERT ON inscrit
FOR EACH ROW
BEGIN
  DECLARE temp VARCHAR(20);
-- On déclare un booléen pour la condition d'arrêt de la boucle
  DECLARE fin BOOLEAN DEFAULT FALSE;
  DECLARE curs CURSOR FOR SELECT motdepasse FROM inscrit;
-- On déclare une condition d'arrêt pour la boucle : dès qu'il n'y a plus de données dans le curseur;
  DECLARE CONTINUE HANDLER FOR NOT FOUND SET fin = TRUE;
-- Début du bloc de traitement :
  BEGIN
-- Ouverture du curseur
    OPEN curs;
-- On boucle sur les lignes du curseur
      BOUCLE_MDP: LOOP 
      FETCH curs INTO temp;
-- Si la condition d'arrêt on ferme le curseur et on quitte la boucle;
      IF fin THEN
        CLOSE curs;
        LEAVE BOUCLE_MDP;
      END IF;
-- Si la condition métier est remplie (mot de passe trouvé), on ferme le curseur et on quitte la boucle
      IF temp = NEW.motdepasse THEN
        CLOSE curs;
        LEAVE BOUCLE_MDP;
      END IF;
-- Fin de la boucle
    END LOOP BOUCLE_MDP;
-- fin du bloc de traitement
  END;
-- fin du trigger.
END $$

______________________________________________________________
Une question bien formulée, c'est un problème bien compris : ça représente déjà les 3/4 de la réponse ;)

Options: ReplyQuote


Subject
Views
Written By
Posted
Re: Php Admin Trigger bloc if then
2110
May 11, 2012 01:54AM


Sorry, you can't reply to this topic. It has been closed.

Content reproduced on this site is the property of the respective copyright holders. It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.