需求:为每一个部门添加一个临时账号
废话不多说,上代码:
[SQL] 纯文本查看 复制代码 -- 创建存储过程之前需判断该存储过程是否已存在,若存在则删除
DROP PROCEDURE IF EXISTS p_create_temp_user;
-- 创建存储过程
CREATE PROCEDURE p_create_temp_user()
BEGIN
-- 结束标志
DECLARE v_flag int DEFAULT 0;
-- 索引
DECLARE v_index int DEFAULT 0;
-- 部门主键
DECLARE v_depmentId varchar(255);
-- 部门编码
DECLARE v_depmentCode varchar(255);
-- 用户账号
DECLARE v_username varchar(255);
-- 定义游标,并将sql结果集赋值到游标中
DECLARE departList CURSOR FOR select id,org_code from sys_depart ;
-- 声明当游标遍历完后将标志变量置成某个值
DECLARE CONTINUE HANDLER FOR NOT FOUND SET v_flag=1;
-- 打开游标
open departList;
-- 将游标中的值赋值给变量,注意:变量名不要和返回的列名同名,变量顺序要和sql结果列的顺序一致
fetch departList into v_depmentId,v_depmentCode;
-- 当v_flag不等于1,也就是未遍历完时,会一直循环
while v_flag<>1 do
-- 索引赋值
set v_index = v_index+1;
-- 用户账号 user_1 ,user_2 ....
set v_username = CONCAT('user_',v_index);
-- 执行业务逻辑
-- 新建用户
insert into user(id,username,realname,password,create_time) values(uuid(),v_username,'123456',now());
-- 当s等于1时表明遍历以完成,退出循环
fetch departList into v_depmentId,v_depmentCode;
end while;
-- 关闭游标
close departList;
END;
涉及知识点:
1、变量定义。
2、变量赋值。
3、游标定义及赋值操作。
4、游标遍历相关知识。
由于这个存储过程是入门之用,大神们请收下留情!!!! |