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();
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库