MySQL数据库-存储函数

爱丽思 25天前 ⋅ 89 阅读

存储函数是有返回值的存储过程,存储函数的参数只能是IN类型的,具体语法如下:

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

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

例子:计算1到n的累加值。

create function fun_add(n int)
-- deterministic 定义返回类型,相同的参数总是返回相同的结果
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 fun_add(10);