以下代码用于从名为employee7的表中查找前五名最高薪员工,并使用mysql中的游标将详细信息添加到另一个名为temp的表中,但出现错误
你的mysql语法有错误,检查与mysql服务器版本相对应的手册,以获取使用near'loopcursorloop;的正确语法。关闭c7;结尾; 在第 17 行
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 ;
Run Code Online (Sandbox Code Playgroud)
我不知道你从哪里得到使用 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 ;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13117 次 |
| 最近记录: |