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 :
Les deux tables sont correctement remplies, notamment les champs 'dat_mvts' et 'dat_fm'.
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`) )
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 :voila le résultat que j’obtiens :
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; ENDje voudrais voir apparaitre les champs dates des tables définissant le curseur.
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'
Merci de votre aide.
Partager