Reputation: 5
please help here
delimiter $
create procedure corrige_preg()
begin
declare var_test integer;
declare var_contador integer;
set var_contador = 1;
select test_tnum into var_test from preg
group by test_tnum having max(pnum)<>count(pnum);
if var_test is null then
select "ok";
else
declare var_cursor cursor for
select pnum from preg where test_tnum = var_test;
open var_cursor;
loop1: loop
fetch var_cursor into pnum;
pnum = var_contador;
set var_contador=var_contador+1;
end loop loop1;
close var_cursor;
end if;
end $
Error : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'declare var_cursor cursor for select pnum from preg where test_tnum = var_test' at line 11
Upvotes: 0
Views: 2084
Reputation: 782785
Declarations have to be after BEGIN
, so wrap a BEGIN
/END
block around the ELSE
block. You also need a declaration for pnum
, and have to use the SET
statement to assign to it.
delimiter $
create procedure corrige_preg()
begin
declare var_test integer;
declare var_contador integer;
set var_contador = 1;
select test_tnum into var_test from preg
group by test_tnum having max(pnum)<>count(pnum);
if var_test is null then
select "ok";
else begin
declare pnum integer;
declare var_cursor cursor for
select pnum from preg where test_tnum = var_test;
open var_cursor;
loop1: loop
fetch var_cursor into pnum;
set pnum = var_contador;
set var_contador=var_contador+1;
end loop loop1;
close var_cursor;
end;
end if;
end $
delimiter ;
Upvotes: 0
Reputation: 65587
Move the cursor declaration to the top, right after the variable declaration.
For example:
delimiter $
create procedure corrige_preg()
begin
declare var_test integer;
declare var_contador integer;
declare var_pnum integer;
declare var_cursor cursor for
select pnum from preg where test_tnum = var_test;
set var_contador = 1;
select test_tnum into var_test from preg
group by test_tnum having max(pnum)<>count(pnum);
if var_test is null then
select "ok";
else
open var_cursor;
loop1: loop
fetch var_cursor into var_pnum;
-- var_pnum = var_contador;
set var_contador=var_contador+1;
end loop loop1;
close var_cursor;
end if;
end $
Upvotes: 1