Bonjour.
Lorsque je crée la PSTK ci-dessous, elle se vrée bien mais lorsque je l'appelle, j'ai une erreur ;
alors que j'espérai que la table soit 'touslesport.2017resultats.Erreur dans la requête (1146): Table 'touslesport._tableresultats' doesn't exist
Je ne comprends pas pourquoi mon paramètre "2017resultats" n'est pas pris en compte.
Merci de votre aide.
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 /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */; -- -------------------------------------------------------- DELIMITER | DROP PROCEDURE IF EXISTS `sommes_mensuelles`| CREATE PROCEDURE sommes_mensuelles (IN _tableresultats VARCHAR(13), IN _an INT) DETERMINISTIC LANGUAGE SQL BEGIN DECLARE _nbmois INT DEFAULT 12; DECLARE _mois INT DEFAULT 1; DECLARE _sport VARCHAR(3); DECLARE _nsport INT DEFAULT 0; DECLARE _tsport INT DEFAULT 3; DECLARE _somme INT DEFAULT 0; DECLARE _total INT DEFAULT 0; WHILE _nsport < _tsport DO SET _nsport = _nsport + 1; IF _nsport = 1 THEN SET _sport = 'V'; ELSEIF _nsport = 2 THEN SET _sport = 'C'; ELSEIF _nsport = 3 THEN SET _sport = 'N'; END IF; WHILE _mois <= _nbmois DO SELECT COALESCE( SUM(distance_parcours), 0 ) AS sum INTO _somme FROM parcours as p INNER JOIN sorties AS s ON p.id_parcours = s.parcours_id_parcours WHERE YEAR(s.date_sorties) = _an AND MONTH(s.date_sorties) = _mois AND p.sport_parcours = _sport; INSERT INTO _tableresultats (`sport`, `mois`, `somme`) VALUES (_sport, _mois, _somme); SET _mois = _mois + 1; END WHILE; SELECT COALESCE( SUM(somme), 0 ) AS sum INTO _total FROM _tableresultats WHERE sport = _sport; INSERT INTO _tableresultats (`sport`, `mois`, `somme`) VALUES (_sport, 13, _total); SET _mois = 1; END WHILE; END| DELIMITER ; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 CALL sommes_mensuelles ('2017resultats',2017);
Partager