Mysql中的存储函数
1.定义变量
set 变量名 = 变量值
注意:为区分系统变量还是用户自定义变量,用户自定义变量前面加@符号
可以通过select 获取当前变量
2.select into语法注入变量值
select a,b,c into @a,@b,@c语法
如果select返回多行语法,mysql会报错或者最后一行赋值
在sql总赋值,可以使用@who :=xxx赋值
3.内置函数
format,Now,from_unixtime(),unix_timestamp(),charLength()和编码有关,length()
concat,substring
以下定义几种常见类型的自定义函数
1.无参数自定义函数
delimiter $$
create function sayHello() returns varchar(25)
begin
return 'Hello ShanShanBox.com';
end
$$
delimiter ;
注意:
函数与数据库绑定,可以使用数据库名点方法名访问
函数必须有返回值,returns一定要加S
2.带有if逻辑判断
delimiter $$
create function func1() returns varchar(5)
begin
if hour(now()) > 17 then
return '晚';
else
return '早';
end if;
end
$$
delimiter ;
3.带有while循环函数
delimiter $$
create function func2() returns int
begin
set @i = 1;
set @sum = 0;
while @i <= 10 do
set @sum = @sum + @i;
set @i = @i + 1;
end while;
return @sum;
end
$$
delimiter ;
4.循环控制
leave 相当于break终止循环
iterate 相当于continue,跳过当前循环进行下一次循环
在while循环中,不会根据leave和iterate的位置控制循环,而是由循环的标签决定的
那么什么事循环的标签的,其实我也说不清,直接看代码吧
delimiter $$
create function func3() returns int
begin
set @i = 1;
set @sum = 0;
w:while @i <= 10 do
if @i = 5 then
leave w;
end if;
set @sum = @sum + @i;
set @i = @i + 1;
end while;
return @sum;
end
$$
delimiter ;
看到没,w:就是while循环的标签,多么好看的表情啊
5.带参数的自定义函数
delimiter $$
create function func4(username varchar(20)) returns varchar(25)
begin
return concat('hello ',username);
end
$$
delimiter ;
以上就是几个简单的自定义函数
学好不容易,且行且珍惜