【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;
	select avg(score) from into c;
	return c;
end$$
delimiter ;

运行结果如下:

【MySQL8.0】解决函数体function不能使用declare什么变量_第1张图片

至此,成功实现了函数的定义。

你可能感兴趣的:(错误解决,MySQL)