今天在极客时间学习了SQL必知必会专栏,游标的部分,在下面总结一下游标的使用。 使用游标的步骤如下:定义游标,用变量接收游标状态,打开游标,游标中取得数据,关闭游标,释放游标,下面就从这是步骤来使用游标。
定义游标
代码语言:javascript复制DECLARE cursor_name CURSOR FOR select_statement
cursor_name 为游标名称,select_statement代表SELECT语句
定义变量接收游标状态
在这里需要定义一个变量来接收游标当前是否已经指向最后。
代码语言:javascript复制DECLARE done INT DEFAULT false;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = true;
done为变量名称,先将done默认值定义为false。第二句的含义就是当游标指到末尾时将done设置为true。
打开游标
代码语言:javascript复制OPEN cursor_name
游标中取得数据
代码语言:javascript复制FETCH cursor_name INTO var_name ...
可以理解为将游标指向下一行。
关闭数据
代码语言:javascript复制CLOSE cursor_name
释放游标
代码语言:javascript复制DEALLOCATE cursor_namec
例子
这里引用极客时间的一段代码,作为一个简单的范例:
代码语言:javascript复制CREATE PROCEDURE `calc_hp_max`()
BEGIN
-- 创建接收游标的变量
DECLARE hp INT;
-- 创建总数变量
DECLARE hp_sum INT DEFAULT 0;
-- 创建结束标志变量
DECLARE done INT DEFAULT false;
-- 定义游标
DECLARE cur_hero CURSOR FOR SELECT hp_max FROM heros;
OPEN cur_hero;
read_loop:LOOP
FETCH cur_hero INTO hp;
SET hp_sum = hp_sum hp;
END LOOP;
CLOSE cur_hero;
SELECT hp_sum;
END
再次回顾学习一次SQL,游标自我理解就想像鼠标的光标一样可以对每个数据进行扫描,可以到达每个数据的位置。总结游标的使用步骤定义游标,用变量接收游标是否结束,打开游标,游标中取得数据,关闭游标,释放游标。