一、概述
游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。 游标充当指针的作用,能遍历结果中的所有行,但他一次只指向一行。类似迭代器 游标的作用就是用于对查询数据库所返回的记录进行遍历,以便进行相应的操作。 游标多是用在存储过程、触发器以及函数中来处理一些业务
二、优缺点
优点
游标对从数据库中 select 查询得到的结果集的每一行(不可以跳过任何一行数据)可以进行不同的操作,是一种分离的思想。
缺点
只能一行一行操作,性能不高 使用游标可能会产生死锁,造成内存开销大
三、基本语法
1、声明
DECLARE 游标名称
CURSOR FOR 查询语法
2、打开游标
OPEN 游标名称
3、取游标中的数据
FETCH 游标名称 INFO var_name
[,var_name
].....
4、关闭游标
CLOSE 游标名称
;
5、删除游标
drop cursor 游标名称
四、应用示例
delimiter
create procedure p2
()
begin
declare id
,age
,total
int;
declare name
,sex
varchar(20) character set utf8
;
declare done
int default 0;
declare cur
cursor for select stuId
,stuName
,stuSex
,stuAge
from student
where stuAge
> 19;
declare continue handler for not found
set done
=1;
open cur
;
set total
= 0;
xxx:
loop
fetch cur
into id
,name
,sex
,age
;
if done
= 1 then
leave xxx
;
end if;
set total
= total
+ 1;
end loop;
close cur
;
select total
;
end
delimiter ;