广告
返回顶部
首页 > 资讯 > 数据库 >批量插入(函数+存储过程)
  • 470
分享到

批量插入(函数+存储过程)

批量插入(函数+存储过程) 2021-11-18 04:11:46 470人浏览 才女
摘要

create table dept( id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT, deptno MEDIUMINT UNSIGNED NOT NULL DEFAULT 0, dname VARCH

批量插入(函数+存储过程)

create table dept(
id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
deptno MEDIUMINT UNSIGNED NOT NULL DEFAULT 0,
dname VARCHAR(20) NOT NULL DEFAULT "",
loc VARCHAR(13) NOT NULL DEFAULT ""
)engine=innodb default charset=GBK;

create table emp(
id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
empno MEDIUMINT UNSIGNED NOT NULL DEFAULT 0,
ename VARCHAR(20) NOT NULL DEFAULT "",
job VARCHAR(9) NOT NULL DEFAULT "",
mgr MEDIUMINT UNSIGNED NOT NULL DEFAULT 0,
hiredate DATE NOT NULL,
sal DECIMAL(7,2) NOT NULL,
comm DECIMAL(7,2) NOT NULL,
deptno MEDIUMINT UNSIGNED NOT NULL DEFAULT 0
)engine=innodb default charset=GBK;


##随机产生字符串
DELIMITER  $$
CREATE FUNCTioN rand_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 SET return_str=CONCAT(return_str,SUBSTRING(chars_str,FLOOR(1+RAND()*52),1));
SET i=i+1;
END WHILE;
RETURN return_str;
END $$

##随机产生部门编号
DELIMITER  $$
CREATE FUNCTION rand_num()
RETURNS INT(5)
BEGIN
DECLARE i INT DEFAULT 0;
SET i =FLOOR(100+RAND()*10);
RETURN i;
END $$


#如果要删除
drop function rand_num;

#创建往emp表中插入数据的存储过程
DELIMITER  $$
CREATE PROCEDURE insert_emp(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 emp (empno,ename,job,mgr,hiredate,sal,comm,deptno) VALUES((START+i),rand_string
(6),"SALESMAN",0001,CURDATE(),2000,400,RAND_NUM());
UNTIL i=max_num
END REPEAT;
COMMIT;
END $$


#创建往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),rand_string(10),rand_string(8));
UNTIL i=max_num
END REPEAT;
COMMIT;
END $$

DELIMITER  ;

CALL insert_dept(100,10);
CALL insert_emp(1000001,50000);

您可能感兴趣的文档:

--结束END--

本文标题: 批量插入(函数+存储过程)

本文链接: https://www.lsjlt.com/news/6018.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作