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

标签 mysql cursor

我有一个名为 TRY 的表,如下所示......

try(name,sal) values('tony',10000),('david',20000),('rony',30000),('sami',40000)

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

 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;;

使用这个我可以正确获取 SAL 列的所有值,但问题是它返回一个额外的行,该行与 SAL 列的最后一个值重复,即我正在重复最后一个值。

请解决我的问题。提前致谢。

最佳答案

您需要稍微更改一下功能,在 FETCH 操作后检查 done -

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

关于mysql - 使用游标重复最后返回的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20511572/

相关文章:

mysql - MySQL 查询中 EXPLAIN、count(1) 和表内容之间的差异

php - 数据库的下拉选项

css - iPad 取代文本区域中的光标

oracle - 将 Oracle 游标行转换为管道函数的用户定义记录类型

MySQL 将字符串添加到自身

php - 在 MYSQL 中查询或使用 PHP 逻辑更快

php - Datatables 列中的 MySQL 循环

mysql - 无法使用Python将数据从csv文件加载到MySQL表

mysql - 在存储过程 MYSQL 中创建临时表

java - 一个参数具有多个参数 - Selection 和 SelectionArgs