详细的描述了MySQL中的存储函数。

存储函数

存储函数是有返回值的存储过程,存储函数的参数只能是IN类型的。

语法

CREATE FUNCTION 存储函数名称([参数列表])
RETURNS type [characteristic ...]
BEGIN
--SQL语句
RETURN ...;
END;

characteristic说明:
+ DETERMINISTIC:相同的输入参数总是产生相同的结果
+ NO SQL:不包含SQL语句。
+ READS SQL DATA:包含读取数据的语句,但不包含写入数据的语句。

样例

-- 存储函数
-- 计算从1到n的累加
create function fun1(n int)
returns int deterministic
begin
declare total int default 0;

while n > 0 do
set total := total + n;
set n := n - 1;
end while;

return total;
end;

select fun1(100);

注意当未添加 deterministic 会产生如下bug:

MySQL06-01未指定参数性质的bug

运行结果:

MySQL06-02存储函数的运行结果

注意

存储函数必须要有返回值,而且参数只能是输入类型的参数,其过程实现完全可以被存储过程所代替。

因此存储函数的使用较少,这里仅做了解。