Bonjour,
J'ai commencé un développement avec SQLServer puis par magie, se termine avec MySQL...
Juste avant la mis en prod, il y eu des changements fonctionnels et aussi dans les données de départ, invalidant mes données de tests.
J'avais fait des données de tests (SQLServeur) avec cette requête :
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
46
47
48 declare @Promesseid int declare @Zoneid int declare @libZone varchar(50) declare @libPromesse varchar(50) declare zone_cursor cursor for select ZoneParcours.ZoneParcoursId from ZoneParcours declare promesse_cursor cursor for select Promesses.PromesseId from Promesses open zone_cursor fetch next from zone_cursor into @Zoneid while @@FETCH_STATUS=0 begin set @libZone=(select ZoneParcours.LibelleParcours from ZoneParcours where ZoneParcours.ZoneParcoursId=@Zoneid) open promesse_cursor fetch next from promesse_cursor into @promesseid while @@FETCH_STATUS=0 begin set @libPromesse=(select Promesses.LibellPromesse from Promesses where PromesseId=@Promesseid) insert into Questions (LibelleQuestion,FormatReponse,NumeroOrdre, PromesseId,ZoneParcoursId) values (@libZone+ '_' +@libPromesse + '_question 1 ?','1',1,@Promesseid,@Zoneid) , (@libZone+ '_' +@libPromesse + '_question 2 ?','2',2,@Promesseid,@Zoneid) , (@libZone+ '_' +@libPromesse + '_question 3 ?','3',3,@Promesseid,@Zoneid) fetch next from promesse_cursor into @promesseid end close promesse_cursor fetch next from zone_cursor into @Zoneid end close zone_cursor deallocate promesse_cursor deallocate zone_cursor
J'ai essaye de changer pour qu'elle fonctionne sous MySQL :
Quoi que je fasse, j'ai l'erreur :
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
46
47
48
49
50
51
52
53
54
55 block1 : begin declare Promesseid INT; declare Zoneid INT; declare libZone VARCHAR(50); declare libPromesse VARCHAR(50); delete from question; declare zone_cursor cursor for select ZoneParcours.ZoneParcoursId from ZoneParcours; declare promesse_cursor cursor for select Promesses.PromesseId from Promesses; DECLARE CONTINUE HANDLER FOR NOT FOUND SET v_finished = 1; open zone_cursor fetch zone_cursor into Zoneid; get_zone: loop IF v_finished = 1 THEN LEAVE get_zone; END IF; set libZone=(select ZoneParcours.LibelleParcours from ZoneParcours where ZoneParcours.ZoneParcoursId=Zoneid); DECLARE CONTINUE HANDLER FOR NOT FOUND SET v_finished2 = 1; open promesse_cursor fetch promesse_cursor into promesseid; Get_promesse:loop block2:begin IF v_finished2 = 1 THEN LEAVE Get_promesse; END IF; set libPromesse=(select Promesses.LibellPromesse from Promesses where PromesseId=Promesseid); insert into Questions (LibelleQuestion,FormatReponse,NumeroOrdre, PromesseId,ZoneParcoursId) values (concat(libZone, '_' ,libPromesse , '_question 1 ?'),'1',1,Promesseid,Zoneid) , (concat(libZone, '_' ,libPromesse , '_question 2 ?'),'2',2,Promesseid,Zoneid) , (concat(libZone, '_' ,libPromesse , '_question 3 ?'),'3',3,Promesseid,Zoneid) ; end loop get_promesse end block2 close promesse_cursor; end loop get_zone close zone_cursor end block1
N'étant pas spécialiste de MySQL, j'aimerais avoir un petit coup de pouce...Erreur SQL (1064): Erreur de syntaxe près de 'block1:
begin
declare Promesseid INT;declare Zoneid
INT;declare libZ' à la ligne 1
Partager