Bonjour à tous.

Voici le code de ma procédure stockée qui me ramène seulement une seule ligne au lieu d'en ramener 3, en effet j'a trop articles dans ma table , en effet j'ai comme l'impression que les résultats sont écrasés au fur et a mesure, c'est seulement la dernier ligne qui est affiché.
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
 
DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `INVENTAIRES`(
IN _Exercice VARCHAR(255),
OUT _madate VARCHAR(255) ,
OUT _maref VARCHAR(255),
OUT _lelibelle VARCHAR(255),
OUT _LeTotalEntre INT,
OUT _LeTotalSortie INT,
OUT   _LeTotalPartenaire INT,
OUT _Qtedisponible INT
)
    NO SQL
    DETERMINISTIC
BEGIN
DECLARE _codearticle INT;
DECLARE _fin   INTEGER  DEFAULT 1;
 
/* delaration du curseur*/
DECLARE _curs CURSOR 
FOR SELECT ast_article.id
FROM ast_article;
 
DECLARE CONTINUE HANDLER FOR NOT FOUND SET _fin = 0;
 
OPEN  _curs;
FETCH _curs INTO _codearticle;
 
WHILE (_fin)
DO
/* Recherche des autres éléments de la table article*/
SELECT ast_article.reference_article,ast_article.designation_artcicle
INTO _maref,_lelibelle
FROM ast_article
WHERE ast_article.id  = ._codearticle;
 
 /*Recherche de quantite total en entree*/
SELECT sum(ligne_tstock.qte_transfert) 
INTO _LeTotalEntre
FROM ligne_tstock
INNER JOIN transfert_stock ON transfert_stock.id=ligne_tstock.id_transfertstock
WHERE ligne_tstock.code_article = _codearticle AND 
transfert_stock.exercice= _Exercice AND
transfert_stock.type_mouvement='ENTREE';
 
if (_LeTotalEntre IS NULL) then 
 set _LeTotalEntre = 0 ;
 end if ;
 
/*Recherche de quantite total en sortie*/ 
SELECT sum(ligne_tstock.qte_transfert) 
INTO _LeTotalSortie
FROM ligne_tstock
INNER JOIN transfert_stock ON transfert_stock.id=ligne_tstock.id_transfertstock
WHERE ligne_tstock.code_article = _codearticle AND 
transfert_stock.exercice= _Exercice AND
transfert_stock.type_mouvement='SORTIE';
 
 
 if (_LeTotalSortie IS NULL) then 
 set _LeTotalSortie = 0 ;
 end if ;
 
/*Recherche de quantite total envoyée aux service ou au partenaire*/ 
SELECT sum(ligne_tpartenaire.qte_transfert) 
INTO _LeTotalPartenaire
FROM ligne_tpartenaire
INNER JOIN transfert_partenaire ON transfert_partenaire.id=ligne_tpartenaire.id_transfertpartenaire
WHERE ligne_tpartenaire.code_article = _codearticle AND 
transfert_partenaire.exercice= _Exercice;
 
 if (_LeTotalPartenaire IS NULL) then 
 set _LeTotalPartenaire = 0 ;
 end if ;
 
 /* Recherche de la quantite restante*/
SET _Qtedisponible = _LeTotalEntre - (_LeTotalSortie + _LeTotalPartenaire);
 
 
 if (_Qtedisponible IS NULL) then 
 set _Qtedisponible = 0 ;
 end if ;
 
FETCH _curs INTO _codearticle;
END WHILE;
 
CLOSE _curs;
END$$
DELIMITER ;
J'ai besoin d'aiguillage, pour faire une boucle qui va me ramener les informations sur les 3 articles.

Merci a tous