MySql 技术内幕 (第7章 游标)

7.1 面向集合与面向过程的开发

游标是一种面向过程的SQL编程方法,与前面面向集合的方法处理关系数据库不同。

7.2 游标的使用

游标可以在存储过程函数以及触发器事件中使用。

 

游标有三个属性:

  • Asensitive,数据库也可以选择不复制结果集

  • Read Only,不可更新

  • Nonscrollable,游标只能向一个方向前进,不可以跳过任何一行

 

游标的使用步骤:

  • 定义游标

  • 打开定义游标的变量

  • 从游标取得数据

  • 关闭游标

create procedure cur_demo()
begin
    declare done int default 0;
    declare _id int default 0;
    declare _name varchar(50);
    declare _create_timestamp timestamp;
    declare cur1 CURSOR FOR SELECT id, name, create_timestamp from demo;
    declare continue handler for NOT FOUND set done = 1;

    open cur1;
    read_loop:
    LOOP
        FETCH cur1 INTO _id,_name,_create_timestamp;
        IF done THEN
            LEAVE read_loop;

        end if;
    END LOOP;

    close cur1;
end;

7.3 游标的开销

游标的开销主要是因为需要对每行进行处理,处理过程越复杂,游标的效率越低

7.4 使用游标解决问题

7.4.1 游标的性能分析

7.4.2 连续聚合

连续集合问题还可以细分为累计,滑动,年初至今问题;

7.4.3 最大会话数

7.5 小结     

原文地址:https://www.cnblogs.com/coloz/p/13589993.html