MySQL:在while循环中获取游标

MySQL:在while循环中获取游标,mysql,Mysql,我想知道当循环在做什么时,是什么。假设我有下表 Person | num ------------ A | 10 B | 7 C | 3 然后我做下面的事情,嵌套的循环在做什么 DECLARE done INT DEFAULT 0; DECLARE cur CURSOR FOR SELECT num FROM num_file; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000

我想知道当循环在做什么时,
是什么。假设我有下表

Person | num
------------
 A     | 10
 B     |  7
 C     |  3
然后我做下面的事情,嵌套的
循环在做什么

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;

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

用于在
num\u文件
表的
num
列中的值上循环的光标

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

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

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


在while循环中,计算
num
列的后续值之间的差值,并将其存储在变量
temp
中。首先,您声明了一个默认值为0的变量
done

用于在
num\u文件
表的
num
列中的值上循环的光标

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

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

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


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

中。如果
,则有一个额外的
结束。使用
temp
,您没有做任何有意义的事情。听起来你很困惑。你在问它在做什么,我在说(从我的角度)你有一个错误的额外端,如果是的话,谈论不会运行的代码有什么意义?抱歉,修正了。好吧,你刚才删除了一条评论,所以看起来我是在自言自语。你是在问你的代码在做什么,或者如何做一件特定的事情。我只想知道代码在做什么。如果
,你还有一个额外的
结尾。使用
temp
,您没有做任何有意义的事情。听起来你很困惑。你在问它在做什么,我在说(从我的角度)你有一个错误的额外端,如果是的话,谈论不会运行的代码有什么意义?抱歉,修正了。好吧,你刚才删除了一条评论,所以看起来我是在自言自语。你是在问你的代码在做什么,或者如何做一件特定的事情。我只是想知道代码在做什么。