Navicat for MySQL 函数 存储过程 遍历创建大量复杂结构测试数据

需求说明:

测试接口时需要造数据,由于数据层次比较复杂导致数量较大,手动添加比较困难,所以就建了一个存储过程函数,来遍历插入数据。

工具 Navicat for MySQL

1、这里使用的Navicat  所以先安装Navicat 并连接到你想有创建函数的数据库

2、新建函数

***注意****

由于软件版本不同 步骤稍有差别,以下第3、4部是我用window时 老版本的navicat需要选择这两部,现在用mac版的 版本貌似比较新,直接就进入第5步了。如果你直接进入第5部  直接进行编辑即可,就像写java、scala等一样写一个function就好了,只是语法有所不同而已。

3、选择过程

4、设置添加参数,如选择IN指的是调用此函数时传入的参数名以及类型,out为返回值........

5、在以下对应位置修改和填写自己需要的内容,我们只需要写方法名,参数列表,函数体 就ok了

填写完函数内容保存即可

示例:以下是我创建之后的语句

注:其中 第一句中的DEFINER=`root`@`%`  是创建语句时DEFINER = CURRENT_USER 自动获取替换登录用户后生成的,不需要自己修改。

CREATE DEFINER=`root`@`%` PROCEDURE `MakeData_dm_f_activity_analysis_hour`()
BEGIN
	DECLARE dataType int;#声明变量(有些变量需要添加长度限制才能正常保存函数)
	DECLARE grading int;
	DECLARE gradTime VARCHAR(11);#声明变量(有些变量需要添加长度限制才能正常保存函数)
	DECLARE sumCount int;
	DECLARE inputDate VARCHAR(11);
	set inputDate='2018-05-01';#需要造那天的数据修改此处即可
	set dataType=1;
	set grading=0;
	WHILE grading<24 do   #插入数据的多少
		set sumCount=RAND()*1000;   #随机函数 RAND()生成的是0~1之间的小数,乘以多少就可以放大多少倍,如起点不是0,则加上起点数 如20~80:RAND()*60+20

	if (grading<10) then  
		 set gradTime = CONCAT('0',grading,':00'); 
	else  
		set gradTime =CONCAT(grading,':00');  
	end if;
		#5个数据类型 和24个小时遍历生成数据,组合七个固定生命周期插入
		INSERT INTO `bg_webAnalysis`.`dm_f_activity_analysis_hour`(`id`, `tenant_id`, `activity_id`, `type`, `data_type`, `sum_target`, `data_hour`, `created_at`, `updated_at`, `created_by`, `updated_by`, `publish_status`, `input_date`) VALUES (null, 1, 1, 1, dataType, sumCount, gradTime, '2018-05-21 14:51:34', '2018-05-21 14:51:40', 123123, 3213123, 1, inputDate);
	if (dataType<5) then  
		 set dataType= dataType+1;
	elseif (dataType=5) then  
		 set grading=grading+1; 
		 set dataType= 1;
	end if; 
	END WHILE;

END;

此处是造数,所以无需参数和返回值。

注意事项/语法:

1、DECLARE 用来声明变量。但是有些变量需要添加长度限制才能正常保存函数。

2、set 用给变量赋值

3、WHILE do END WHILE; 来循环

4、条件用if语句

if (dataType<5) then

set dataType= dataType+1;

elseif (dataType=5) then

set grading=grading+1;

set dataType= 1;

end if;

但是此处注意elseif 要连起来写。

5、CONCAT(str1,str2,str3,......'); 函数用来拼接字符串

6、RAND()生成0~1的数据数(与java等类似)可以*1000 再赋给int即可产生,0~1000的随机整数

猜你喜欢

转载自blog.csdn.net/CaptainJava/article/details/82254933