mysql游标的使用
mysql游标的使用
1、数据准备
建表
# 建表 drop table if exists store; CREATE TABLE IF NOT EXISTS `store` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(20) NOT NULL, `count` int(11) NOT NULL DEFAULT '1', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=7;
插入数据
INSERT INTO `store` (`id`, `name`, `count`) VALUES (1, 'android', 15), (2, 'iphone', 14), (3, 'iphone', 20), (4, 'android', 5), (5, 'android', 13), (6, 'iphone', 13);
查看主数据
select * from store;

2、游标实例
# 编写存储过程,使用游标计算iPhone使用总数量 drop procedure if exists pr_ios_count; create procedure pr_ios_count() begin # 创建接收游标数据的变量 declare c int; declare n varchar(20); # 创建总数变量 declare total int default 0; # 创建结束标志变量 declare done int default false; # 创建游标 declare cur cursor for select name,count from store where name = 'iphone'; # 指定游标循环结束时的返回值,防止引发mysql预定义的not found错误 declare continue handler for not found set done = true; # 设置总数初始值 # set total = 0; # 打开游标 open cur; # 开始循环游标里面的数据 read_loop:loop # 根据当前游标指向一条数据 fetch cur into n,c; # 判断游标是否结束 if done then leave read_loop; end if; # 获取一条数据,将count值进行累加 set total = total + c; # 结束游标循环 end loop; # 关闭游标 close cur; # 输出结果 select n,total; end;
查看结果
call pr_ios_count();


浙公网安备 33010602011771号