MySql 游标的使用

2024-04-23 19:27:47 浏览数 (2)

今天在极客时间学习了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,游标自我理解就想像鼠标的光标一样可以对每个数据进行扫描,可以到达每个数据的位置。总结游标的使用步骤定义游标,用变量接收游标是否结束,打开游标,游标中取得数据,关闭游标,释放游标。

0 人点赞