mysql存储过程-Navicat

1.定义

存储过程 = sql语句集合+控制语句   #完成特定功能的sql语句集合

2.基本格式

drop procedure if exists 存储过程名称  #如果存在先删除,增强代码的健壮性

create procedure 存储过程名称(参数名,数据类型)

begin

存储过程体

end

call 存储过程名称(参数值) #调用存储过程

3.参数设置

in 参数值在调用时必须指定  #输入参数

out 参数可以在调用后被返回  #输出参数

inout 参数调用时指定,并且可以被返回    #输入并输出参数

4.实例

现在有一个user用户表,需要往user表中插入1000个登录用户

要求如下:
1、在插入用户前先判断是否存在1000个登录用户,如果存在则统计表中实际的行数、如若不存在则自动补齐剩余的数据
2、表名为user,存储过程名字随意取,表中字段有id user_name user_pwdverify 格式如下(1,user1,123456,W4E38J),且id、
     用户名不能重复,verify验证码字段为随机生成6位数验证码 CONCAT函数 可以把2个字符串进行连接。
drop procedure if exists random_user;
create procedure random_user(n int)
begin
    declare i int(20) default(select count(*) from user);  #查user表的行数
    declare j varchar(20) default "";  #对j进行初始化
    declare x varchar(20) default "";
    /*drop table if exists user;
    create table user(id int(20) primary key auto_increment,user_name varchar(20),  user_pwd varchar(20),verify varchar(20));
    insert into user values(1,"user1",123456,"W4E38J");*/
    #select * from user;
    if i>=n then
        select count(*) from user;
    else
        while i<n do
            set j = (select CONCAT("user",i+1));
            set x = (select rand_str(6));  #第一种方法
            #set x = (select substring(md5(rand()), 1, 6));  #第二种方法
            #set x = (SELECT SUBSTRING(UUID(),1,6));  #第三种方法
            insert into user(user_name,user_pwd,verify)values(j,123456,x);
            set i = i + 1;
        end while;
        select * from user;
    end if;    
end

call random_user(1005)

 

posted @ 2021-03-07 20:15  王ZY萍萍  阅读(392)  评论(0)    收藏  举报