在MySQL的PHPMyAdmin
中创建存储函数MySQL说:#1415 - 不允许从函数
返回结果集
BEGIN
SET @pAvg = 0;
SET @p1 = 0;
SET @p2 = 0;
SET @p3 = 0;
SET @p4 = 0;
IF river > 1 THEN
SELECT @P1 := Precipitation FROM abd_2013 where id = 1;
SELECT @P2 := Precipitation FROM abd_2014 where id = 1;
SELECT @P3 := Precipitation FROM abd_2015 where id = 1;
SELECT @P5 := Precipitation FROM abd_2016 where id = 1;
SELECT @pAvg := (@p1 + @p2 + @p3 + @p4)/4;
ELSEIF river < 1 THEN SELECT @P5;
END IF;
RETURN river;
END
答案 0 :(得分:0)
本案例中的错误消息告诉最重要的部分:
不允许从函数
返回结果集
此行为与MySQL手册中有关存储过程和函数的内容一致:
对于可以在函数定义时确定返回结果集的语句,不允许从函数错误中返回结果集(ER_SP_NO_RETSET)。
使用返回结果集的select语句为@Pn
变量赋值,这在函数中是不允许的。您必须从代码中删除这些语句。 RETURN river
会返回结果值,但不会返回结果设置。
我还担心您使用在连接中共享的会话变量(定义为@variable_name的变量),因此在连接中同时多次调用同一函数可能会相互干扰。
存储函数只能使用return
语句返回单个值作为其输出。其他任何东西都被视为副作用。如果您希望MySQL脚本填充多个变量,那么必须使用存储过程,您不能使用存储的函数。