什么是游标?如何使用游标?下面本篇文章就来带大家了解一下MySQL中的游标,介绍一下使用游标的步骤,希望对大家有所帮助!
要明白什么是游标,首先要了解存储过程,存储过程是事先经过编译并且存储在数据库中的一段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>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中文网如有侵权请联系ymkuzhan@126.com删除
转载请注明来源:MySQL中什么是游标?如何使用游标?
本文永久链接地址:https://www.ymkuzhan.com/41174.html
本文永久链接地址:https://www.ymkuzhan.com/41174.html
下载声明:
本站资源如无特殊说明默认解压密码为www.ymkuzhan.com建议使用WinRAR解压; 本站资源来源于用户分享、互换、购买以及网络收集等渠道,本站不提供任何技术服务及有偿服务,资源仅提供给大家学习研究请勿作它用。 赞助本站仅为维持服务器日常运行并非购买程序及源码费用因此不提供任何技术支持,如果你喜欢该程序,请购买正版! 版权声明:
下载本站资源学习研究的默认同意本站【版权声明】若本站提供的资源侵犯到你的权益,请提交版权证明文件至邮箱ymkuzhan#126.com(将#替换为@)站长将会在三个工作日内为您删除。 免责声明:
您好,本站所有资源(包括但不限于:源码、素材、工具、字体、图像、模板等)均为用户分享、互换、购买以及网络收集而来,并未取得原始权利人授权,因此禁止一切商用行为,仅可用于个人研究学习使用。请务必于下载后24小时内彻底删除,一切因下载人使用所引起的法律相关责任,包括但不限于:侵权,索赔,法律责任,刑事责任等相关责任,全部由下载人/使用人,全部承担。以上说明,一经发布视为您已全部阅读,理解、同意以上内容,如对以上内容持有异议,请勿下载,谢谢配合!支持正版,人人有责,如不慎对您的合法权益构成侵犯,请联系我们对相应内容进行删除,谢谢!