Bonjour,
Je débute dans les procédures stockées sous MYSQL 5.0
Je souhaite créer une procédure qui sera à terme appellée depuis un script PHP 4.
Cette procédure doit me renvoyer le résultat d'une requete multilignes multicolones.
Déjà est-ce possible?
Et si oui comment?
J'ai essayé la méthode Curseur :
et lorsque j'apelle la procedure de Mysql Comand Line Client...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 DELIMITER $$ DROP PROCEDURE IF EXISTS `fnoSelectOffre $$ CREATE PROCEDURE fnoSelectOffre (OUT idOffre CHAR(25), OUT fromDep CHAR(25), OUT toDep CHAR(25)) BEGIN DECLARE idOffre_b CHAR(25); DECLARE fromDep_b CHAR(25); DECLARE toDep_b CHAR(25); DECLARE NOT_FOUND BOOLEAN DEFAULT FALSE; DECLARE Curs_1 CURSOR FOR SELECT idOffres, OF_From_Dep, OF_To_Dep FROM VL_Offres ; DECLARE CONTINUE HANDLER FOR NOT FOUND SET NOT_FOUND=TRUE; SET idOffre_b = ''; SET fromDep_b = ''; SET toDep_b = ''; OPEN Curs_1; REPEAT FETCH Curs_1 INTO idOffre, fromDep, toDep; SET idOffre = idOffre+ idOffre_b; SET fromDep = fromDep+fromDep_b; SET toDep = toDep+toDep_b; UNTIL (NOT_FOUND) END REPEAT; CLOSE Curs_1; END $$ DELIMITER ;
j'ai une erreur 1312 : Procedure can't return a result set in the given context
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 mysql> call VLDev.fnoSelectOffre (@idOffre, @From,@To)
idem avec la tentative suivante :
J'ai vu qu'il existait la méthode de préparation de requete. mysql_stmt_prepare()
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 DELIMITER $$ DROP PROCEDURE IF EXISTS toto $$ CREATE PROCEDURE toto () LANGUAGE SQL NOT DETERMINISTIC BEGIN SELECT idOffres, OF_From_Dep, OF_To_Dep FROM VL_Offres ; END $$ DELIMITER ; mysql > call VLDev.toto();
Faut-il passer par là?
Merci d'avance
Partager