如何在mysql中使用结束循环进行游标循环

SRG*_*SRG 1 mysql database

以下代码用于从名为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)

P.S*_*mon 5

我不知道你从哪里得到使用 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)