2021-08-12

记录自己第一条mysql 存储过程 体会存储过程中用查询出来的数据做循环

背景

加了新的业务需求导致要给之前的每一位用户做一些初始化数据
业务:根据每个人的权限,给每个人初始化十二条快捷入口的数据

工具

navicat
新建函数
选择过程
后面需不需要参数什么的不说了,我这次的都不需要,反正可以有参数和返回

sql

CREATE DEFINER=`root`@`%` PROCEDURE `quick_entry`()
BEGIN
DECLARE end_flag int DEFAULT 0;

DECLARE i int DEFAULT 0;	

DECLARE userId bigint;
##查出我要循环的数据
DECLARE sys_user CURSOR FOR SELECT id from sys_user;
##定义循环结束标志 
DECLARE CONTINUE HANDLER FOR NOT FOUND SET end_flag=1;

OPEN sys_user;
##讲值赋值到变量中开始循环
FETCH sys_user INTO userId;
while end_flag<>1 do 
INSERT INTO  user_resource_quick_entry (id,tenant_id,user_id,resources_id)  
##(@i:=@i+1)id  (select @i:=i) s:查询的结果集多加一列序号列,当作我插入新表时的主键
SELECT (@i:=@i+1)id,u.tenant_id,u.id user_id,rb.id resources_id FROM sys_user u left JOIN sys_user_role ur on ur.user_id=u.id 
left JOIN sys_role_resources rr on rr.role_id=ur.role_id 
LEFT JOIN sys_resources r on r.id=rr.resources_id
LEFT JOIN sys_resources rb on rb.parent_id=r.id,(select @i:=i) s
WHERE rb.quick_entry_flag=1
#使用循环的数据
and u.id=userId
LIMIT 0,12;

 SET i=i+12;

	FETCH sys_user INTO userId;
 end while;

close sys_user;

END

简单记录,拜拜

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值