MySQL中怎么使用游标

63次阅读
没有评论

共计 1916 个字符,预计需要花费 5 分钟才能阅读完成。

这篇文章主要介绍了 MySQL 中怎么使用游标,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让丸趣 TV 小编带着大家一起了解一下。

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

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  
 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,用来退出循环。

感谢你能够认真阅读完这篇文章,希望丸趣 TV 小编分享的“MySQL 中怎么使用游标”这篇文章对大家有帮助,同时也希望大家多多支持丸趣 TV,关注丸趣 TV 行业资讯频道,更多相关知识等着你来学习!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-28发表,共计1916字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)