在 mysql "error in your SQL syntax" 上声明游标错误
declare cursor error on mysql "error in your SQL syntax"
请帮忙
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
将游标声明移到顶部,紧跟在变量声明之后。
例如:
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 $
声明必须在 BEGIN
之后,因此在 ELSE
块周围包裹一个 BEGIN
/END
块。您还需要 pnum
的声明,并且必须使用 SET
语句来分配给它。
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 ;
请帮忙
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
将游标声明移到顶部,紧跟在变量声明之后。
例如:
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 $
声明必须在 BEGIN
之后,因此在 ELSE
块周围包裹一个 BEGIN
/END
块。您还需要 pnum
的声明,并且必须使用 SET
语句来分配给它。
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 ;