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 :
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 ;
et lorsque j'apelle la procedure de Mysql Comand Line Client...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
mysql> call VLDev.fnoSelectOffre (@idOffre, @From,@To)
j'ai une erreur 1312 : Procedure can't return a result set in the given context


idem avec la tentative suivante :

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();
J'ai vu qu'il existait la méthode de préparation de requete. mysql_stmt_prepare()
Faut-il passer par là?

Merci d'avance