首页数据库MySQL中游标怎样理解?如何使用?

MySQL中游标怎样理解?如何使用?

时间2024-03-24 15:44:03发布访客分类数据库浏览844
导读:这篇文章我们来了解MySQL中的游标,什么是游标?如何使用游标?下文对游标以及游标的使用有很详细的介绍,对大家学习和理解MySQL中的游标都有一定的帮助,接下来就跟随小编来了解看看吧!要明白什么是游标,首先要了解存储过程,存储过程是事先经过...

这篇文章我们来了解MySQL中的游标,什么是游标?如何使用游标?下文对游标以及游标的使用有很详细的介绍,对大家学习和理解MySQL中的游标都有一定的帮助,接下来就跟随小编来了解看看吧!

要明白什么是游标,首先要了解存储过程,存储过程是事先经过编译并且存储在数据库中的一段SQL语句,他可以接受参数,也可以在其中使用IF语句、设置变量、循环等,比如下面语句用于创建一个存储过程。

delimiter $$
create procedure select_all() begin select * from user;
     end;
    $$

调用存储过程。

mysql>
      call select_all;
    $$

存储过程可以减少数据库和应用服务器之间的传输,对提供数据库处理效率还是有好处的,而游标(Cursor)有的地方又叫光标,可以在存储过程中,对结果集进行循环处理,但是目前,MySQL只允许我们从SELECT语句从头到尾获取结果集中的每一行,无法从最后一行获取到第一行,也无法直接跳转到结果集中的指定行。

使用游标有以下几个步骤

1、游标定义

DECLARE cursor_name CURSOR FOR select_statement

2、打开游标

OPEN cursor_name;
    

3、获取游标中的数据

FETCH cursor_name INTO var_name [, var_name]...

4、关闭光标

CLOSE cursor_name;
    

5、释放光标

DEALLOCATE cursor_name;
    

实例

创建表

CREATE TABLE cursor_table
(id INT ,name VARCHAR(10),age INT
)ENGINE=innoDB DEFAULT CHARSET=utf8;
    
insert into cursor_table values(1, '张三', 500);
    
insert into cursor_table values(2, '李四', 200);
    
insert into cursor_table values(3, '王五', 100);
    
insert into cursor_table values(4, '老六', 20);
    


create table cursor_table_user(name varchar(10));
    

下面我们通过游标,遍历cursor_table表,把年龄大于30的人名存放到cursor_table_user

drop procedure getTotal;
    
delete from cursor_table_user ;
    

CREATE  PROCEDURE getTotal()
BEGIN  
   DECLARE total INT;
     
   DECLARE sid INT;
      
   DECLARE sname VARCHAR(10);
      
   DECLARE sage INT;
      
   DECLARE done INT DEFAULT false;
      
   DECLARE cur CURSOR FOR SELECT id,name,age from cursor_table where age>
    30;
      
   DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = true;
       
   SET total = 0;
      
   OPEN cur;
      
   FETCH cur INTO sid, sname, sage;
      
   WHILE(NOT done) 
   DO  
       insert cursor_table_user values(sname);
    
       SET total = total + 1;
      
       FETCH cur INTO sid, sname, sage;
      
       
   END WHILE;
      
   CLOSE cur;
      
   SELECT total;
      
END
call getTotal();
    

mysql>
     select * from cursor_table_user;
    
+--------+
| name   |
+--------+
| 张三   |
| 李四   |
| 王五   |
+--------+
3 rows in set (0.00 sec)

这段程序有一行非常重要,DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = true; ,他表示如果游标或SELECT语句没有数据的时候,将done变量的值设置 为 true,用来退出循环。

下面就是通过WHILE来依次遍历。

现在大家对于MySQL中游标的作用和用法应该都有所了解了,上述示例有一定的参加价值,需要的朋友可以了解看看,希望大家阅读完这篇文章能有所收获。最后,想要了解更多MySQL游标的内容,大家可以关注网络其它相关文章。

文本转载自PHP中文网

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: MySQL中游标怎样理解?如何使用?
本文地址: https://pptw.com/jishu/652157.html
MySQL中常见约束有哪些?作用和用法是什么? PHP项目中如何连接SQL数据库,并测试

游客 回复需填写必要信息