Mysql中的存储函数

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 ;

以上就是几个简单的自定义函数

学好不容易,且行且珍惜

猜你喜欢

转载自shuizhongyue.iteye.com/blog/2290243