mysql存储过程游标之loop循环解读 –游标样例:把users中的id为偶数的记录逐一更新用户名 create procedure test11 begin declare stopflag int default 0 ; declare username varchar(32) ; –创建一个游标变量,declare变量名cursor… declare username_cur cursor for select name from users where id%2=0; –游标是保存查询结果的临时区域 –游标变量username_cur保存了查询的临时结果,实际上就是结果集 –当变量中保存的结果都查询一遍(遍历),到达结尾,将变量stopflag设置为1,用于循环中判断是否结束 declare continue handler for not found set stopflag = 1; open username_cur ;–打开游标 fatch username_cur into username ;–游标向前走一步,取出一条记录放在变量 username 中 while (stopflag = 0) do –如果游标还没有结尾就继续 begin –在用户名前拼接’_cur’字段 update users set name = concat(username,’_cur’) where name = username ; fetch username_cur into username; end; end while; –结束循环 close username_cur ; –关闭游标 end –游标根据日期区间循环写入数据 create procedure f_rpt_g06 ( in i_begin_date int , in i_end_date int ) begin declare v_oc_date,v_m_begin_date int; declare done int default 0; – 游标循环处理输出入参数日期区间的数据 declare cur cursor for select oc_date from dim_date where oc_date between i_begin_date and i_end_date order by oc_date asc; –将变量done设置为1,用于循环中判断是否交结束 declare continue hadnler for not found set done = 1; –打开游标 open cur; dateloop:loop –游标向前走一步,取出一条记录放在变量v_oc_date中 fetch cur into v_oc_date; if done=1 then leave dateloop; end if; –删除表数据 delete from f_rpt_g06 where data_dt = v_oc_date –插入表数据 insert into f_rpt_g06 (字段1,字段2,字段3,字段4) select 字段1,字段2,字段3,字段4 from f_rpt_g06_123 end loop dateloop close loop end
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/73233.html