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é.
J'ai besoin d'aiguillage, pour faire une boucle qui va me ramener les informations sur les 3 articles.
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 ;
Merci a tous
Partager