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 :
ce qui me donne comme resultat :
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
+------------------------------------------------------------------------------------------------------------------+
| @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 |
Partager