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)
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)

浙公网安备 33010602011771号