存储函数
存储函数属于存储过程扩展,也一次编译多次调用的预编译Sql语句集合
优点:
高效,复用,省流,安全,解耦
语法:
delimiter 自定义符号 - 如果函数体只有一条语句, begin和end可以省略,同时delimiter也可以省略
create function 函数名(形参列表) returns 返回类型 - 注意是returns
begin
函数体 - 函数内定义的变量如:set @x = 1; 变量x为全局变量,在函数外面也可以使用
返回值
end
自定义符号
delimiter ;
// 或者 end $$;
##示例
delimiter $$ create function myfun3(ia int, ib int) returns int begin return ia + ib; end $$ delimiter ; //单语句可简写为 create function myfun3(ia int, ib int) returns int return ia + ib;
##查看函数
show function status [like 'pattern']; -- 查看所有自定义函数, 自定义函数只能在本数据库使用。
show create function 函数名; -- 查看函数创建语句
##删除函数
drop function 函数名;
--全局变量举例
delimiter $$
create function my_sum(x int) returns int
begin
set @i = 1;
set @sum = 0;
while @i <= x do
set @sum = @sum + @i;
set @i = @i + 1;
end while;
return @sum;
end
$$
delimiter ;
//或者 end $$;
--局部变量举例
//指定数之前的和,但5的倍数不加
delimiter $$
create function my_sum2(x int) returns int
begin
declare i int default 1;
declare sum int default 0;
sumwhile:while i <= x do
if i % 5 = 0 then
set i = i + 1;
iterate sumwhile;
end if;
set sum = sum + i;
set i = i + 1;
end while;
return sum;
end
$$
delimiter ;