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();

 

posted @   左叔  阅读(200)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
点击右上角即可分享
微信分享提示