介绍

在实际工作中没有测试性能,我们经常需要改造大批量的数据,手动插入是不太可能的,这时候就得用到存储过程了

CREATE TABLE `kf_user_info` (`id` int(11) NOT NULL COMMENT '用户id',`gid` int(11) NOT NULL COMMENT '客服组id',`name` varchar(25) NOT NULL COMMENT '客服名字',`nickName` varchar(64) NOT NULL COMMENT '客服昵称',`mobile` varchar(12) NOT NULL COMMENT '手机号',`maxChannel` int(11) NOT NULL COMMENT '最大接入数',`createTime` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`updateTime` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',PRIMARY KEY (`id`),UNIQUE KEY `mobile` (`mobile`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='客户信息表';

如何定义一个存储过程呢?

CREATE PROCEDURE 存储过程名称 ([参数列表])
BEGIN需要执行的语句
END

举个例子,插入id为100-999的1000条数据
用Navicat执行

-- 删除之前定义的
DROP PROCEDURE IF EXISTS create_kf;-- 开始定义
CREATE PROCEDURE create_kf(IN loop_times INT)
BEGINDECLARE var INT;SET var = 100;WHILE var < loop_times DO    INSERT INTO kf_user_info (`id`,`gid`,`name`,`nickName`,`mobile`,`maxChannel`) VALUES (var, 1000, var, var, var, var);SET var = var + 1;END WHILE;
END;-- 调用
call create_kf(1000);

存储过程的三种参数类型

参数类型 是否返回 作用
IN 向存储过程传入参数,存储过程中修改该参数的值,不能被返回
OUT 把存储过程计算的结果放到该参数中,调用者可以得到返回值
INOUT IN和OUT的结合,即用于存储过程的传入参数,同时又可以把计算结构放到参数中,调用者可以得到返回值

用MySQL执行

得用DELIMITER 定义新的结束符,因为默认情况下SQL采用(;)作为结束符,这样当存储过程中的每一句SQL结束之后,采用(;)作为结束符,就相当于告诉MySQL可以执行这一句了。但是存储过程是一个整体,我们不希望SQL逐条执行,而是采用存储过程整段执行的方式,因此我们就需要定义新的DELIMITER ,新的结束符可以用(//)或者($$)

因为上面的代码应该就改为如下这种方式

DELIMITER //
CREATE PROCEDURE create_kf_kfGroup(IN loop_times INT)
BEGIN  DECLARE var INT;SET var = 100;WHILE var <= loop_times DO    INSERT INTO kf_user_info (`id`,`gid`,`name`,`nickName`,`mobile`,`maxChannel`) VALUES (var, 1000, var, var, var, var);SET var = var + 1;END WHILE;
END //
DELIMITER ;

查询已经定义的存储过程

show procedure status;

参考博客

编写存储过程批量造数据相关推荐

  1. 利用MYSQL存储过程批量造数据

    作为一名测试工程师,造这种存量数据,一般都是压测的时候需要一些存量数据.我平时用Jmeter比较多,比较少用到MYSQL的存储过程,最近浏览博客,看到有人用这个方式造数据,就趁机体验了一把. 一般的压 ...

  2. MySQL工作笔记-编写存储过程批量添加数据

    目录 原理 演示 原理 存储过程就和编程里面的函数差不多,这里主要是写一个for循环! 演示 如下代码: delimiter $$ create procedure autoInsert() begi ...

  3. mysql 存储过程 批量导入数据_sql 利用存储过程批量导入数据

    什么是 存储过程(stored procedure)是一组为了完成特定功能的sql语句集,是利用sql server所提供的transact-sql语言所编写的程序.经编译后存储在中.存储过程是数据库 ...

  4. 软件测试如何批量造数据

    测试过程中,经常用到批量造数据的场景:准备大量测试数据.执行压测等等. 比如说,你要模拟1000个用户同时发短信,那么你需要先创建1000个不同手机号的用户,直接在页面上造数据显然是不太现实的. 如果 ...

  5. plsql 存储过程 批量提交_Oracle 存储过程批量插入数据

    oracle 存储过程批量插入大量数据 declare numCount number; userName varchar2(512); email varchar2(512); markCommen ...

  6. mysql通过存储过程批量造测试数据

    --创建表t_user; drop TABLE t_user; CREATE TABLE `t_user` (`id` bigint(20) NOT NULL AUTO_INCREMENT,`name ...

  7. python 批量造数据

    1. 数据表结构(postgresql) Table: public.phm_2040tempo_if_mst -- DROP TABLE IF EXISTS public.phm_2040tempo ...

  8. MySQL存储过程批量插入数据

    文章目录 1. 怎么写出来的?踩了哪些坑 1.1 新建存储过程的语法 1.2 声明变量 1.3 存储过程参数 1.4 WHILE循环 1.5 写存储过程 1. 怎么写出来的?踩了哪些坑 因为阿里Jav ...

  9. mysql利用存储过程批量插入数据

    -- 如果存在此存储过程则删掉 DROP PROCEDURE IF EXISTS proc_initData; -- 定好结束符为"$" DELIMITER $ -- 创建 CRE ...

  10. 创建存储过程批量插入数据

    什么是存储过程,简单来说存储过程是一组为了完成特定功能的的SQL语句集.先看脚本: #! /bin/bashhost="xxx" port="xxx" user ...

最新文章

  1. 你只写了两行代码,为什么要花两天时间?
  2. 【Android 系统开发】 Android 系统启动流程简介
  3. 1006:A+B问题
  4. 继承的概念和实现 、 super关键字 、 Object常见方法、抽象类、接口、模板方法模式、成员内部类、匿名内部类
  5. oracle 练习 50_萨克斯每天需要练习内容
  6. 设计一个可以变换的c语言图案,关于图形和变换专题的数学试题
  7. Redis Cluster 集群扩容与收缩
  8. php redis zset 延迟队列_用PHP+Redis实现延迟任务,实现自动取消订单
  9. 网络安全基础——批处理编写
  10. 2012年2月份第1周51Aspx源码发布详情
  11. 操作系统——Windows 控制台命令
  12. 【老生谈算法】matlab实现无标度网络算法源码——无标度网络
  13. msicuu.exe,msizap.exe
  14. TX2 开机自动启动程序
  15. 微信小程序头像叠加循环渲染
  16. sht30 linux示例代码,SHT30 Linux标准 i2c-dev 读取程序
  17. Procmon 结果列代码及其含义Detail 列使用的文件属性代码
  18. DOS窗口(控制台程序)禁用鼠标左键选择(暂停程序的功能)
  19. python写文字冒险游戏手机版_用128行代码实现一个文字冒险游戏
  20. 电路原理计算机,电路原理A卷(07计算机).doc

热门文章

  1. [翻译]IAdaptable是什么?
  2. 中文如何翻译成英文?手机中英文一键翻译超简单
  3. matlab极坐标图刻度,[转载]如何在Matlab极坐标polar绘图上增加刻度单位
  4. Learning deep representations by mutual information estimation and maximization
  5. AndroidQ适配之存储权限的变更
  6. 爬虫代理IP产品如何选择
  7. 硕士研究生计算机专业录取分数线,全国所计算机研究生录取分数线.doc
  8. linux安装8723网卡驱动,deepin 系统 安装 Realtek RTL8723BE 网卡驱动
  9. Apple Pencil 一代和二代有什么区别
  10. cad多段线画圆弧方向_cad弧形多线(cad多段线怎么画弧线)