含义:
保存查询(select)结果集的数据类型,可以用游标来循环来遍历结果集。类似链表,遍历的时候只能从第一个到最后一个。
语法:
-- 声明游标
declare 游标名 cursor for select 语句;
-- 打开游标
open 游标名;
-- 获取游标数据,获取到最末尾会报02000错误
fetch 游标名 INTO 变量 [, 变量 ];
-- 关闭游标
close 游标名;
例子
create procedure xx()
BEGIN
declare newDeptno int;
declare minSal decimal(7,2);
declare maxSal decimal(7,2);
declare avgSal decimal(7,2);
-- 游标表类型[数据的集合]
declare yy cursor for select deptno, min(sal) minSal ,max(sal) maxSal ,avg(sal) avgSal from emp group by deptno;
-- 当发生02000错误代码的时候关闭游标
declare EXIT HANDLER FOR SQLSTATE '02000' close yy;
drop table if EXISTS summary;
create table summary(
deptno int,
minSal decimal(7,2),
maxSal decimal(7,2),
avgSal decimal(7,2)
);
open yy;
WHILE true DO
fetch yy INTO newDeptno,minSal,maxSal,avgSal;
insert into summary values(newDeptno,minSal,maxSal,avgSal);
END WHILE;
close yy;
END;
-- 调用
call xx();