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 :
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
Quoi que je fasse, j'ai l'erreur :
Erreur SQL (1064): Erreur de syntaxe près de 'block1:
begin
declare Promesseid INT;declare Zoneid
INT;declare libZ' à la ligne 1
N'étant pas spécialiste de MySQL, j'aimerais avoir un petit coup de pouce...