我想知道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;
答案 0 :(得分:0)
首先,您声明了一个变量done
,默认值为0。
用于循环num
表中num_file
列中值的游标。
当获取游标中的所有行时,将设置done = 1的处理程序(如果尝试再次从该游标中获取行,则Mysql返回错误代码02000)。
然后打开光标。现在它包含值为num
列的行。
while循环将被执行,直到done设置为1.也就是说,直到获取所有行。
在while循环中,计算num
列的后续值之间的差异并将其存储在变量temp
中。