Bonjour.
Lorsque je crée la PSTK ci-dessous, elle se vrée bien mais lorsque je l'appelle, j'ai une erreur ;
Erreur dans la requête (1146): Table 'touslesport._tableresultats' doesn't exist
alors que j'espérai que la table soit 'touslesport.2017resultats.
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);