Bonjour,

J'ai une procédure stockée qui parcour les enregistrements d'une requête à l'aide d'un curseur.
A chaque passage dans le curseur, je souhaite ajouter le résultat à une variable temporaire. Pour l'instant j'utilise un CONCAT ce qui me donne un résultat en ligne... Est ce possible d'avoir le résultat sous forme de table ??

Voici mon code :

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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
CREATE DEFINER=`adm_dech`@`%` PROCEDURE `test`()
BEGIN
 
/* Variable du curseur */
DECLARE v_FinCurseur BOOLEAN DEFAULT FALSE;
DECLARE v_Produit INT;
DECLARE v_Poids INT;
 
/* Declaration du curseur */
DECLARE c_Produit CURSOR FOR
	SELECT IdProduit,Poids
	FROM PRODUITS;
 
/* Declaration de l'evenement de fin de parcours du curseur */
DECLARE CONTINUE HANDLER FOR NOT FOUND SET v_FinCurseur = TRUE;
 
/* Initialise ma variable */
SET @strsql='';
 
/* Ouverture du curseur */
OPEN c_Produit;
 
  REPEAT
    FETCH c_Produit INTO v_Produit, v_Poids;
 
    IF NOT v_FinCurseur THEN
	 IF (@strsql='') THEN
            SET @strsql = v_produit;
	ELSE 
	    SET @strsql = CONCAT(@strsql , ' ',v_produit);
	END IF;
  END IF;
 
  UNTIL v_FinCurseur END REPEAT;
 
/* Fermeture du curseur */
CLOSE c_Produit;
 
END
ce qui me donne comme resultat :
+------------------------------------------------------------------------------------------------------------------+
| @strsql |
+------------------------------------------------------------------------------------------------------------------+
| 1 2 3 4 5 6 7 8 9 10 1247 1248 1249 1250 1251 1252 1253 1254 12552 |
+------------------------------------------------------------------------------------------------------------------+

Alors que je voudrais :
+-----------+
| @strsql |
+-----------+
| 1 |
| 6 |
| 1247 |
| 1251 |