MySQL:在while循环中获取游标

时间:2016-10-26 22:16:09

标签: mysql

我想知道while循环正在做什么。说我有下表。

Person | num
------------
 A     | 10
 B     |  7
 C     |  3

然后我执行以下操作,嵌套while循环正在做什么?

DECLARE done INT DEFAULT 0;
        DECLARE cur CURSOR FOR
            SELECT num FROM num_file;


DECLARE CONTINUE HANDLER FOR SQLSTATE '02000'
        SET done = 1;

    OPEN cur;
    FETCH cur INTO first_val;
    WHILE NOT done DO
        FETCH cur INTO second_val;
        IF NOT done THEN
            SET temp = second_val - first_val;
            SET first_val = second_val;
        END IF;
    END WHILE;
    CLOSE cur;

--------

更新 它是否取每个数字之间的差异? 例如。 10-7; 7-3;

1 个答案:

答案 0 :(得分:0)

首先,您声明了一个变量done,默认值为0。

用于循环num表中num_file列中值的游标。

当获取游标中的所有行时,将设置done = 1的处理程序(如果尝试再次从该游标中获取行,则Mysql返回错误代码02000)。

然后打开光标。现在它包含值为num列的行。

while循环将被执行,直到done设置为1.也就是说,直到获取所有行。

在while循环中,计算num列的后续值之间的差异并将其存储在变量temp中。