美文网首页
《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