创建一个用来放数据的表
create table id(x int);
定义存储过程和游标
delimiter |
create procedure printn()
begin
declare i int;
declare n int default 1;
declare done int default false; ----------设置done的初始值为false
declare cur cursor for select x from id; ------------定义游标
declare continue handler for not found set done = true; ------当找不到下一条记录时,设置done为true
while n <= 100 do
insert into id values(n); ---------------将1到100插入id表中
set n = n + 1;
end while;
open cur; -----------打开游标
read_loop:loop -----------设置一个循环标识
fetch cur into i; -----------取出当前游标值存入变量i
if done then -----------直到取最后一条记录,done值都为false,继续read_loop这个循环
leave read_loop;
end if;
select i; -----------打印结果(此处可以做任何你想做的操作)
end loop;
close cur; -----------关闭游标
end |
delimiter ;
切换回正常的分隔符
call printn;
调用存储过程printn
关于MySQL游标的几点说明:
1,MySQL函数无法使用返回多行结果的语句,游标可以帮你选择出某个结果集;
2,使用游标可以轻易的取出在检索出来的行中前进或后退一行或多行的结果;
3,游标可以遍历返回的多行结果;
4,MySQL游标只适用于存储过程和函数