在创建之前,我们先来了解mysql的自定义函数。
MySQL本⾝提供了内置函数: 这些函数的存在给我们⽇常的开发和数据操作带来了很⼤的便利,聚合函数SUM()、AVG()以及⽇期时间函数等等,可是我们总会出现其他的需求:我们需要调⽤⼀个函数,这个函数需要按照我们的要求来实现我们⾃⼰的功能,可是这个函数式系统不能提供的因为这中需求的不确定性。因此我们需要⾃⼰来解决这种需求。还好MySQL设计的扩展性给了我们这个机会,我们可以通过⾃定义函数的功能解决这个问题。
下面来看自定义函数.
先查看函数创建功能是否开启,默认关闭
show variables like '%func%';
# OFF代表已关闭 ON 代表已打开
# 看到OFF之后 输入:
set global log_bin_trust_function_creators=1;
如果这个名字的函数存在,就删掉
drop function if exists add_num;
因为mysql 默认 ; 分号 为结束语句。 所以函数得 用 // 或者 $$ 来区分。
delimiter // 或者 $$
CREATE FUNCTION <函数名> ( [ <参数1> <参数1类型> ],[ <参数2> <参数2类型>])
RETURNS <返回值类型>
BEGIN
<函数体>
RETURN (<返回值>);
END ; 或者$$
delimiter $$
create function add_num(num1 int ,num2 int) returns int
begin
declare a int default num1*num2; #定义局部变量
declare b int ;
set b=50; #对局部变量进行赋值
return ( a+b);
end ;
#执行这个函数
select add_num(30,10);
输出结果为350;
下面我们来进行一万条数据的插入。
注意:字段 是用 ` ` 插入,就是键盘 Esc 下面的 `` 。而不是用 '' 逗号。字符串才是'' 。别弄一天都没弄好哈!
insert into tab1(`name`,`type`,`number`) values ('hh','1','1');
drop function if exists add_num;
delimiter $$
create function add_num() returns int
begin
declare a int default 10000; #定义局部变量
declare i int default 0;
while i<a DO
insert into tab1(`name`,`type`,`number`) values
(concat('数据',i),concat('',floor(rand()*(9999-1000)+1000)),UUID());
set i=i+1;
end while ;
return (i);
end ;
#执行这个函数
select add_num();
一万条数据就这样轻松的生成了;