MYSQL存储过程保存数据

存储过程保存数据

1.创建存储过程

-- 分隔标记
delimiter $$
-- 创建存储过程
create procedure testCur()

BEGIN
-- 声明变量
DECLARE uid varchar(40);
DECLARE pid varchar(40);
DECLARE pcode varchar(40);
DECLARE done INT DEFAULT 0;
 
-- 创建游标,并设置游标所指的数据(这里设置ID不为1是因为ID为1的是总的大类)
DECLARE cur CURSOR for 
select a.user_id AS uid,a.project_id AS pid,p.project_code AS pcode
from acl_role_users a
left join acl_projects p on a.project_id = p.id
where p.project_code is not null;
-- 游标执行完,即遍历结束。设置done的值为1
DECLARE CONTINUE HANDLER for not FOUND set done=1;
-- 开启游标
open cur;
-- 执行循环
posLoop:LOOP

-- 从游标中取出uid,pid,pcode
FETCH cur INTO uid,pid,pcode;

-- 如果done的值为1,即遍历结束,结束循环
        IF done=1 THEN
                LEAVE posLoop;
-- 注意,if语句需要添加END IF结束IF
END IF;
-- 以游标中取出的cid为索引,逐行更新分类表:某分类parent_ids值为它的父分类parent_ids值和它父类的id
INSERT INTO `acl_user_project` (
	`id`,
	`user_id`,
	`project_id`,
	`project_code`,
	`create_dtme`,
	`last_updtme`,
	`create_user_id`,
	`last_update_user_id`,
	`cancelsign`
)
VALUES
	(
		UUID(),
		uid,
		pid,
		pcode,
		NOW(),
		NOW(),
		'd1a00cb2-8cec-11e9-aba6-005056b4a62f',
		'd1a00cb2-8cec-11e9-aba6-005056b4a62f',
		'n'
	);
-- 关闭循环
END LOOP posLoop;
-- 关闭游标
CLOSE cur;
-- 关闭分隔标记
END

2.执行存储过程

CALL testCur;

3.删除存储过程

DROP PROCEDURE testCur;
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值