MySQL   发布时间:2022-05-15  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了MySQL中什么是游标?如何使用游标?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

什么是游标?如何使用游标?下面本篇文章就来带大家了解一下MysqL中的游标,介绍一下使用游标的步骤,希望对大家有所帮助!

MySQL中什么是游标?如何使用游标?

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

delimiter $$
create procedure SELEct_all() begin SELEct * from user; end;$$

调用存储过程。

@H_778_13@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 get@R_844_10586@l;
delete from cursor_table_user ;

CREATE  PROCEDURE get@R_844_10586@l()
BEGIN  
   DECLARE @R_844_10586@l 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 @R_844_10586@l = 0;  
   OPEN cur;  
   FETCH cur INTO sid, sname, sage;  
   WHILE(NOT donE) 
   DO  
       insert cursor_table_user values(sName);
       SET @R_844_10586@l = @R_844_10586@l + 1;  
       FETCH cur INTO sid, sname, sage;  
       
   END WHILE;  
   CLOSE cur;  
   SELECT @R_844_10586@l;  
END
call get@R_844_10586@l();

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中什么是游标?如何使用游标?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: