bonjour,

j'ai une procédure d'importation
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
DELIMITER |
DROP PROCEDURE IF EXISTS import_donnees|
CREATE PROCEDURE import_donnees()
BEGIN
SET @myInsert:= CONCAT('
INSERT INTO relever_mesure(moyenne, minimum, maximum, id_calendrier_calendrier,
id_station_Stations, id_capteur_capteur)
SELECT i.moyenne,
i.minimum,
i.maximum,
d.id_calendrier,
i.id_station,
c.id_capteur
FROM import i
INNER JOIN calendrier d ON i.date_heure = d.date_heure_locale
INNER JOIN capteur c ON i.capteur=c.libelle ;
');
prepare stmnt FROM @myInsert;
EXECUTE stmnt;
DEALLOCATE PREPARE stmnt;
END ;
avec cette procédure si jamais une ligne existe déjà ça plante, donc je voulais à partir de cette dernière créer une autre procédure pour importer mais remplacer les valeurs moyenne, minimum et maximum .

en me basant sur une procédure similaire je pensais que ce qui suit marcherais mais ce n'est pas le cas
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
DELIMITER |
DROP PROCEDURE IF EXISTS import_update|
CREATE PROCEDURE import_update()
BEGIN
SET @myInsert:= CONCAT('
INSERT INTO relever_mesure(moyenne, minimum, maximum, id_calendrier_calendrier,
id_station_Stations, id_capteur_capteur)
SELECT i.moyenne,
i.minimum,
i.maximum,
d.id_calendrier,
i.id_station,
c.id_capteur
FROM import i
INNER JOIN calendrier d ON i.date_heure = d.date_heure_locale
INNER JOIN capteur c ON i.capteur=c.libelle ;
ON DUPLICATE KEY UPDATE moyenne=VALUES(moyenne),
minimum=VALUES(minimum),maximum=VALUES(maximum)
');
prepare stmnt FROM @myInsert;
EXECUTE stmnt;
DEALLOCATE PREPARE stmnt;
END ;
si quelqu'un peut m'aider ...
merci