美文网首页
《mysql必知必会》读书实战笔记24-游标

《mysql必知必会》读书实战笔记24-游标

作者: thinkact | 来源:发表于2017-03-23 22:53 被阅读61次

第24章 使用游标

24.1 游标

游标,是一个select语句的查询结果集,用于交互式应用,如:滚动屏幕上的数据,浏览和修改数据。

在mysql中,游标只能用于存储过程和函数。

24.2 使用游标

使用游标的步骤
1、声明游标:一次声明游标后,可多次打开和关闭游标。
2、打开游标:从服务器检索出数据结果集。一次打开游标后,可多次取出数据。
3、取出数据:按条件筛选、显示数据。
4、关闭游标

注意顺序:declare创建局部变量,要放在declare创建游标之前。

例:创建存储过程,查询所有订单含税合计金额,结果存储到一个表里:
delimiter //
create procedure processorders()
begin

-- 声明局部变量local variables
declare done boolean  default 0; #变量名done(意思为:完成)
declare o int; #变量o(订单)
declare t decimal(8,2); #变量t(订单合计数)

-- 创建游标,定义游标内容为检索所有订单编号。
declare ordernumbers cursor for select order_num from orders;

-- 创建条件处理器
declare continue handler for sqlstate '02000' set done=1; #sql错误代码(sqlstate '02000')

-- 创建表,用于存储结果集。
create table if not exists ordertotals(order_num int,total decimal(8,2));

-- 打开游标,检索出数据放到内存。
open ordernumbers; 

-- 遍历所有行loop through all rows
repeat
        -- 取出数据订单编号
        fetch ordernumbers into o;

        -- 取得订单合计金额,调用上一章的存储过程
        call ordertotal(o,1,t);  #(订单编号,是否含税,订单合计金额)

        -- 将前面取得的 订单编号和订单合计金额写入表
        insert into ordertotals(order_num,total) values(o,t);

-- 遍历循环结束
until done end repeat;

-- 关闭游标,释放内存和资源。
close ordernumbers;
-- 隐含关闭,mysql到达end语句时,会自动关闭游标。

end//
delimiter ;

例:执行存储过程,并显示所有订单含税合计金额:
call processorders;
select * from ordertotals order by order_num;

《mysql必知必会》是一本好书,是一本sql语言入门书,豆瓣评分很高。

作者是英国的Ben Forta,世界知名的技术作家,由人民邮电出版社发行,我觉得原作名: MySQL Crash Course,直译为:《MYSQL速成》更具畅销书潜质,只是比较俗吧,呵呵。

书中从介绍简单的数据检索开始,逐步深入一些复杂的内容,包括联结的使用、子查询、正则表达式和基于全文本的搜索、存储过程、游标、触发器、表约束,等等。

前三章是基础概念,讲了SQL和数据库的基本概念,Mysql数据库的概念和使用方法,第四章开始SQL实操练习,这里是本书的一些实操练习笔记,有兴趣的话可以按这个练习几遍,相信对新手会很有帮助,让你不经意间功力大增。

相关文章

网友评论

      本文标题:《mysql必知必会》读书实战笔记24-游标

      本文链接:https://www.haomeiwen.com/subject/tdurnttx.html