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 连续聚合
连续集合问题还可以细分为累计,滑动,年初至今问题;