函数
1. 随机产生字符串
//函数
delimiter $$
create function ran_string(n int) returns varchar(255)
begin
declare chars_str varchar(100) default 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
declare return_str varchar(255) default '';
declare i int default 0;
while i < n do
set return_str = concat(return_str,substring(chars_str,floor(1+rand()*52),1));
set i=i+1;
end while;
return return_str;
end $$
2. 随机产生部门编号
delimiter $$
create function rand_num() returns int(5)
begin
declare i int default 0;
set i=floor(100+rand()*10);
return i;
end $$
创建存储过程
1. 创建往 emp 表中插入数据的存储过程
delimiter $$
create procedure insert_emp(in start int(10),in max_num int(10))
begin
declare i int default 0;
set autocommit = 0; # 将 autocommit 设置成 0
repeat
set i = i+1;
insert into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno) values((start+i),ran_string(6),'salesman',0001,curdate(),2000,400,rand_num()); # 用到了定义的函数 rand_num()
until i=max_num # 直到到达形参中的 max_num
end repeat;
commit;
end $$
2. 创建往 dept 表中插入数据的存储过程
delimiter $$
create procedure insert_dept(in start int(10),in max_num int(10))
begin
declare i int default 0;
set autocommit = 0;
repeat
set i = i+1;
insert into dept(deptno,dname,loc) values((start+i),ran_string(10),ran_string(8)); # 用到了定义的函数 ran_string(8)
until i=max_num
end repeat;
commit;
end $$
调用存储过程
注意员工有一个部门的外键,所以先插入部门表
delimiter ; # 恢复结束符号
CALL insert_dept(100, 10); # 从100 开始,插 10 个部门【101 --- 110】
标签:10,set,end,函数,int,num,return
From: https://www.cnblogs.com/aclq/p/17545570.html