下面的代码用于从名为employee7的表中找到前五位薪资最高的雇员,并使用mysql中的游标将详细信息添加到另一个名为temp的表中,但我得到了错误
在mysql语法中有一个错误,请检查对应于mysql服务器版本的mannual,以获得正确的语法,以便在第17行使用“循环指针循环;关闭c7;结束”。
DELIMITER //
create procedure cursordemo()
begin
declare eno int(8);
declare ename varchar(15);
declare esal int(10);
declare c7 cursor for select empno,empnm,empsal from employee7 order by empsal desc;
open c7;
cursorloop:loop
fetch c7 into eno,ename,esal;
if c7.rowcount>5 then
leave cursorloop;
insert into temp values (esal,eno,ename);
end loop cursorloop;
close c7;
end //
delimiter ;发布于 2018-02-17 12:56:25
我不知道您从哪里得到使用c7.rowcount的想法,但这不是有效的mysql,在mysql中退出游标循环的更常见的方法是使用示例中的处理程序
DELIMITER //
create procedure cursordemo()
begin
declare eno int(8);
declare ename varchar(15);
declare esal int(10);
declare done int default 0;
declare c7 cursor for select emp_no,last_name,salary from employees order by salary desc;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
open c7;
cursorloop:loop
if done = true then
leave cursorloop;
end if;
fetch c7 into eno,ename,esal;
insert into temp values (esal,eno,ename);
end loop cursorloop;
close c7;
end //
delimiter ;https://stackoverflow.com/questions/48840483
复制相似问题