bonjour à tous
Je rencontre un problème de curseur que je n'arrive pas à résoudre. J'utilise deux tables avec une jointure dont voici les structures :
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
 
CREATE TABLE `mouvements` (
  `MVTS_ID` int(11) NOT NULL AUTO_INCREMENT,
  `NUM_CPTE` bigint(20) NOT NULL,
  `COD_MVTS` int(3) DEFAULT NULL,
  `DAT_MVTS` date DEFAULT NULL,
  `LIBEL_MVTS` varchar(15) DEFAULT NULL,
  `MNT_MVTS` float(12,2) DEFAULT NULL,
  `SP_MVTS` float(12,2) DEFAULT NULL,
  `DIFF_SP` float(12,2) DEFAULT NULL,
  `DIFF_SFJ` float(12,2) DEFAULT NULL,
  `ORDRE_MVTS` int(4) DEFAULT NULL,
  `FLAG1` varchar(1) DEFAULT NULL,
  PRIMARY KEY (`MVTS_ID`),
  KEY `FK_SE_COMPOSE_DE_MVTS` (`NUM_CPTE`),
  CONSTRAINT `FK_SE_COMPOSE_DE_MVTS` FOREIGN KEY (`NUM_CPTE`) REFERENCES `compte` (`NUM_CPTE`)
) 
 
 
CREATE TABLE `sfm` (
  `SFM_ID` int(11) NOT NULL AUTO_INCREMENT,
  `NUM_CPTE` bigint(20) NOT NULL,
  `DAT_FM` date DEFAULT NULL,
  `TYPE_SFM` varchar(17) DEFAULT NULL,
  `ENCOURS` float(12,2) DEFAULT NULL,
  PRIMARY KEY (`SFM_ID`),
  KEY `FK_A_UN_SFM` (`NUM_CPTE`),
  CONSTRAINT `FK_A_UN_SFM` FOREIGN KEY (`NUM_CPTE`) REFERENCES `compte` (`NUM_CPTE`)
)
Les deux tables sont correctement remplies, notamment les champs 'dat_mvts' et 'dat_fm'.

Au travers d'un curseur, je souhaite entre autre mémoriser les champs 'num_cpte', 'dat_mvts', dat_fm pour pouvoir m'en servir ultérieurement. Mon souci, c'est que le fetch me donne bien le champ 'num_cpte', mais me mets les champs date à 0000-00-00. Je ne comprends pas, dans la mesure ou ces mêmes champs ne posent pas de souci par ailleurs. voici mon code test :
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
 
BEGIN
   -- Déclaration de variables
   declare sfj, mnt_m, mnt_j, mnt float(12,2);
   declare dat_m, dat_j, dat_preced date;
   declare num, num_preced, sfm int default 0;
   declare done boolean default 0;
 
   -- Déclararation du curseur
   declare maj_sfj cursor for
   select num_cpte, dat_mvts, dat_fm
   from mouvements mvt
   inner join  sfm
   using(NUM_CPTE)
   where type_sfm = 'Encours Comptable'
   group by num_cpte, dat_mvts
   order by num_cpte, dat_mvts desc;
 
   -- Déclaration variable de détection de fin de fichier
   declare continue handler for SQLSTATE '02000' set done=1;
 
   -- création d'une table tempo pour les résultats
   drop table if exists tempo;
   create table if NOT EXISTS tempo
      (cpte int, dat_fj date, dat_fm date);
 
   -- ouverture du curseur
   open maj_sfj;
 
   -- boucle sur les lignes
   repeat
 
      -- Lecture lignes
       fetch maj_sfj into num, dat_j, dat_m;
 
      -- insertion enregistrements dans la table
      INSERT INTO tempo(cpte,dat_fj, dat_fm)
      VALUES(num, dat_j, dat_m);
 
   -- Fin de la boucle
   until done end repeat;
 
   -- Fermeture du curseur
   close maj_sfj;
END
voila le résultat que j’obtiens :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
'10122109', '0000-00-00', '0000-00-00'
'10122109', '0000-00-00', '0000-00-00'
je voudrais voir apparaitre les champs dates des tables définissant le curseur.
Merci de votre aide.