Re: Php Admin Trigger bloc if then
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 ;)
Subject
Views
Written By
Posted
3631
May 05, 2012 07:24AM
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.