使用游标最后返回的行重复

Abh*_*Dey 1 mysql cursor

我有一个像这样的名为TRY的表....

try(name,sal) values('tony',10000),('david',20000),('rony',30000),('sami',40000)
Run Code Online (Sandbox Code Playgroud)

现在我在一个过程中使用游标通过变量显示工资列的所有值.这样做我试图弄清楚光标是否有效,因为我是光标的新手而且我已经知道了cursor逐个获取每个选定的行.我正在执行以下代码...

 delimiter ;;

 create procedure me()

  begin

    declare done int default 0;

    declare var int;

    declare cur cursor for select sal from try;

    declare continue handler for not found set done=1;

  open cur;

    curloop:loop

     if done=1 then

    leave curloop;

     end if;

       fetch cur into var;

       select var;

    end loop;

 close cur;

end;;
Run Code Online (Sandbox Code Playgroud)

使用这个我正确得到SAL列的所有值,但问题是它返回了一个额外的行,它与SAL列的最后一个值重复,即我重复了最后一个值.

请解决我的问题.谢谢.

Dev*_*art 5

你需要稍微改变一下这个功能,done在FETCH操作后检查-

CREATE PROCEDURE me()
BEGIN
  DECLARE done int DEFAULT 0;
  DECLARE var int;
  DECLARE cur CURSOR FOR SELECT sal FROM try;
  DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;

  OPEN cur;

curloop:
  LOOP

    FETCH cur INTO var;
    IF done THEN
      LEAVE curloop;
    END IF;

    SELECT var;

  END LOOP;

  CLOSE cur;
END
Run Code Online (Sandbox Code Playgroud)