Bonjour,

j'ai un problème avec le code qui suit, j'ai quelques connaissance en MySQL mais je ne suis pas un pro.

je vous explique déjà ce a quoi j'aimerais arriver : j'ai une table avec environ 30000 lignes, j'aimerais créer une procédure générale pour la séparer en plusieurs tables selon 2 des champs de la table.

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
DELIMITER $$
 
DROP PROCEDURE IF EXISTS `genmess`.`Archiv_annee` $$
CREATE PROCEDURE `genmess`.`Archiv_annee` (in id int, in an year)
 
 
BEGIN
 
  DECLARE nom varchar(100) DEFAULT "SELECT uni_nom FROM tbl_univers WHERE uni_id=id";
  DECLARE archivan varchar(100) DEFAULT CONCAT('archivenv_', nom,'_',an);
 
 
  INSERT INTO archivan
  SELECT *
  FROM tbl_msgenv
  WHERE ((EXTRACT(YEAR FROM tbl_msgenv.env_date))=an And (tbl_msgenv.env_univers=id));
 
END $$
 
DELIMITER ;
Ici, je ne suis pas du tout sur de mon code, j'ai déclaré une variable archivan qui sera le nom des tables triées, mais lorsque j'appelle la procédure:
CALL Archiv_annee(3,2008);
J'ai une erreur comme quoi archivan n'est pas une table existante, je comprend parfaitement cela mais je ne sait pas comment y remédier.

Ensuite il doit aussi y avoir un probleme avec les dates car si je remplace archivan par une table vide précédemment créée, cela ne me retourne aucun resultat, alors que dans ma table d'origine il devrait retourner des valeur.

Merci .