Impossible de créer une procédure stockée sur MySQL: 5.0.38
Bonjour,
J'ai suivi un tuto pour écrire une procédure stockée, la voici :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| DROP FUNCTION IF EXISTS `update_flag()`;
CREATE PROCEDURE `update_flag()`
BEGIN
DECLARE ok INT DEFAULT 0;
DECLARE CONTINUE HANDLER FOR SQLSTATE 02000` SET ok = 1;
DECLARE cur CURSOR FOR SELECT pro_url, upload_manuel FROM t_liste_url_annuaire;
DECLARE fpro_url VARCHAR(255), fupload_manuel INT(1);
OPEN cur;
REPEAT
FETCH cur INTO fpro_url, fupload_manuel;
IF NOT ok THEN
UPDATE t_professionnel_test SET upload_manuel = fupload_manuel WHERE pro_url = fpro_url;
END IF;
UNTIL ok END REPEAT;
CLOSE cur;
END
! |
Mais voici le message d'erreur que j'ai :
Citation:
Erreur 1064 : SQLSyntax Error near "BEGIN DECLARE ok INT DEFAULT 0" at line1.
D'avance merci pour vos réponses.
Toujours mon probleme pour exécuter une procédure stockée
Bonsoir jota5450 et merci de me répondre, c'est sympa :
Je n'ai pas bien compris ce que j'ai mélangé ?
Mon idée est de faire une update sur une table en récupérant les valeurs d'une autre dans un curseur, mon exemple traite 2 tables, j'ai juste rajouté le "DROP PROCEDURE..." dans mon éditeur SQL.
Pourrais-tu s'il te plait m'expliquer ce qui ne va pas dans ce que j'ai fait ?
D'avance merci.
Merci Jota ça marche du feu de dieu !!!
Super !
Parfait, j'avais pourtant suivi le tuto à la lettre, mais c'est vrai que le code erreur de MySQL était pourtant clair (déclaration du curseur avant le handler !), donc voici ce que j'ai fait :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| DELIMITER !;
CREATE PROCEDURE `update_flag` ()
BEGIN
DECLARE ok INT DEFAULT 0;
DECLARE fpro_url VARCHAR(255);
DECLARE fupload_manuel INT(1);
DECLARE cur CURSOR FOR SELECT pro_url, upload_manuel FROM t_liste_url_annuaire;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET ok = 1;
OPEN cur;
REPEAT
FETCH cur INTO fpro_url, fupload_manuel;
IF NOT ok THEN
UPDATE t_professionnel_test SET upload_manuel = fupload_manuel WHERE pro_url = fpro_url;
END IF;
UNTIL ok END REPEAT;
CLOSE cur;
END
DELIMITER !; |
et ça marche parfaitement, encore merci :yaisse2:
problème avec une fonction
moi j'ai le meme problème sauf que c'est avec des fonctions voila j'essaye de créer une fonction sur mysql le code est le suivant :
DROP FUNCTION IF EXISTS menu_deroule;
CREATE FUNCTION menu_deroule(id INT UNSIGNED)
RETURNS TEXT DETERMINISTIC
BEGIN
DECLARE t TEXT;
DECLARE r TEXT;
DECLARE i INT UNSIGNED;
SET i = id;
SET t = "";
SET r = "";
WHILE i!=0 AND ISNULL(i)=0
DO
SELECT `child_of`, `titre` INTO i, t FROM `menu` WHERE menu.id=i;
SET r = CONCAT(t, "/", r);
IF i = id THEN
SET i=0;
END IF;
END WHILE;
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
et il me génère cette erreur :
Erreur
requête SQL:
CREATE FUNCTION menu_deroule(
id INT UNSIGNED
) RETURNS TEXTDETERMINISTIC BEGIN DECLARE t TEXT;
MySQL a répondu:Documentation
#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 'TEXT' at line 4
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
je ne sais pas quoi faire aide please