Page 1 sur 1

Procédure stockée : plange sur END WHILE ?!

Posté : 27 mai 2010, 21:48
par Tyeserel
Bonjour,

Je dois effectuer une procédure stockée qui effectue le montant d'une facture annuel d'un client. Bref, la requête plante sur la forme et non sur le fond (enfin pour le moment <<).
L'erreur semble être sur le END WHILE, mais c'est tout de même très louche...

Message d'erreur : #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHILE; CLOSE curseur; END IF; RETURN facture; END' at line 31

Procédure stockée :
DELIMITER $$
CREATE FUNCTION mediatheque.facture_client(idc int) RETURNS double BEGIN
	DECLARE facture double;
	DECLARE tarif_album double;
	DECLARE tarif_film double;
	DECLARE tarif_livre double;
	DECLARE var_famille char(1);
	DECLARE boucle varchar(5) DEFAULT 'START';
	DECLARE curseur cursor FOR
		SELECT oeuvre.famille
		FROM oeuvre, commande
		WHERE oeuvre.id = commande.id_oeuvre
		AND id_client = idc;
	DECLARE CONTINUE HANDLER FOR NOT FOUND SET boucle = 'END';
	SET facture := -1;
	IF exists(SELECT id_client FROM client WHERE id_client = idc) THEN
		SET facture := 0;
		SELECT album, film, livre
		INTO tarif_album, tarif_film, tarif_livre
		FROM tarif;
		OPEN curseur;
		FETCH curseur INTO var_famille;
		WHILE boucle <> 'END' DO
			IF var_famille = 'A' THEN
				SET facture := facture + tarif_album;
			ELSE IF var_famille = 'F' THEN
				SET facture := facture + tarif_film;
			ELSE
				SET facture := facture + tarif_livre;
			END IF;
			FETCH curseur INTO var_famille;
		END WHILE;
		CLOSE curseur;
	END IF;
	RETURN facture;
END;
Je ne vois pas ce que l'erreur 1064 a à voir avec mon problème. Sinon, j'ai testé sur MySQLQueryBrowser mais même problème (sachant que j'utilise phpMyAdmin).
J'ai cherché toute l'après-midi. Si quelqu'un peut m'éclairer à ce sujet.

Merci d'avance.

Re: Procédure stockée : plange sur END WHILE ?!

Posté : 29 mai 2010, 00:08
par Tyeserel
Toujours pas trouvé de solution.

Alors, petit up !

Re: Procédure stockée : plange sur END WHILE ?!

Posté : 31 mai 2010, 22:58
par Tyeserel
Je dois pas avoir posé la question sur le bon forum =p