Bonjour.
Je souhaite créer une fonction qui donne le résultat de cette requête avec une variable et un paramètre :
J'ai simplifié ce que je souhaite :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SELECT SUM(distance)FROM table1 WHERE YEAR(jour) = @annee;
Est ce que je peux faire ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 SET @annee = 2017; CREATE FUNCTION sommes (table1) RETURNS INT BEGIN ... RETURN @somme; END; sommes_mensuelles (table1)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 SET @annee = 2017; CREATE FUNCTION sommes (table1, an) RETURNS INT BEGIN ... RETURN @somme; END; sommes_mensuelles (table1, @annee)
Mon script est plus tordu mais l'idée est la même :
Évidemment ça ne fonctionne pas :
Si quelqu'un peut m'indiquer comment faire, je l'en remercie d'avance.
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 SET @annee = 2017; SET @V1 := (SELECT SUM(distance_parcours) FROM parcours as p INNER JOIN sorties AS s ON p.id_parcours = s.parcours_id_parcours WHERE YEAR(s.date_sorties) = @annee AND MONTH(s.date_sorties) = 01 AND p.sport_parcours = 'V'); CREATE FUNCTION sommes_mensuelles (sport, mois) RETURNS INT BEGIN DECLARE @somme VARCHAR(4); DECLARE resultat INT; SET resultat = 0; SET @somme = SELECT CONCAT('@', mois); SET resultat = SELECT CONCAT( 'SET ', @somme, ' := (''SELECT SUM(distance_parcours) FROM parcours as p INNER JOIN sorties AS s ON p.id_parcours = s.parcours_id_parcours WHERE YEAR(s.date_sorties) = ''', @annee, ' AND MONTH(s.date_sorties) = ''', mois, 'AND p.sport_parcours = ''', sport, '' ); RETURN @somme; END; SET @V2 := sommes_mensuelles ('V', 02, 2017);
Partager