吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1864|回复: 4
收起左侧

[其他转载] 【笔记】MySql存储过程初体验

[复制链接]
alan3258 发表于 2021-3-15 08:48
需求:为每一个部门添加一个临时账号
废话不多说,上代码:
[SQL] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
-- 创建存储过程之前需判断该存储过程是否已存在,若存在则删除
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、游标遍历相关知识。
由于这个存储过程是入门之用,大神们请收下留情!!!!

免费评分

参与人数 1吾爱币 +2 热心值 +1 收起 理由
苏紫方璇 + 2 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

不知道改成啥 发表于 2021-3-15 09:29
直接insert select感觉赢就可以吧
caxzan 发表于 2021-3-15 09:34
 楼主| alan3258 发表于 2021-3-16 08:39
caxzan 发表于 2021-3-15 09:34
楼主,存储过程要考虑下异常回滚

你说的很在理,我这是临时解决问题之用,之前一直没有接触过,感谢建议!
isMe-Chang 发表于 2021-3-16 11:23
学习中,期待更新
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-9-23 17:06

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表