【MySQL8.0】解决函数体function不能使⽤declare什么变量使⽤Deterministic
确定性函数⽤关键词Deterministic标识,表⽰函数的返回值完全由输⼊参数决定。
确定性函数有以下⽤处:
1. 可以在基于函数的索引中使⽤该函数;
2. 可以在物化视图中调⽤;
3. Oracle11g开始会对其参数及其返回结果进⾏缓存处理以提升性能。
但是,是不是⼀个确定性函数是需要⽤户来负责的,就是说对函数进⾏编译的时候不会检查出这个函数是否是确定性的。版本:mysql8.0
前置代码:
男士皮肤DELIMITER $
create function fun_sumscores()returns int
疫情复工begin
declare c int;
SELECT avg(score)from score into c;男生微信名字霸气
暗笑return c;可爱的小天使>桃花怎么形容
END $
报错信息如下:
↑可以看到有⼀个关键词determinitic,该函数便是确定性函数。
代码如下:
马明月delimiter $$
create function func()returns int deterministic
begin
declare c int;
智商是天生的吗
lect avg(score)from into c;
return c;
end$$
delimiter;
运⾏结果如下:
⾄此,成功实现了函数的定义。