MySQL 说:#1415 - 不允许 return 函数的结果集
MySQL said: #1415 - Not allowed to return a result set from a function
请帮我解决这个错误
在 MySQL 的 PHPMyAdmin 中创建存储函数时
MySQL said: #1415 - Not allowed to return a result set from a function
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
Everything going fine if I do the same in Stored Procedure but whenever I opt FUNCTION it gives warning add RETURN and after writing return it raises error #1415
MySQL said: #1415 Error
本例中的错误消息说明了最重要的部分:
Not allowed to return a result set from a function
此行为与 MySQL 存储过程和函数手册中记录的内容一致:
For statements that can be determined at function definition time to return a result set, a Not allowed to return a result set from a function error occurs (ER_SP_NO_RETSET).
您使用 select 语句为 @Pn
变量赋值,return 一个结果集,这在函数中是不允许的。您必须从代码中删除这些语句。 RETURN river
return 是结果 value,但不是结果 set.
我还担心您使用跨连接共享的会话变量(定义为@variable_name 的变量),因此在一个连接中同时多次调用同一函数可能会造成干扰彼此。
存储函数只应 return 单个值作为其在 return
语句中的输出。其他任何事情都被视为副作用。如果您希望 MySQL 脚本填充多个变量,那么您 必须 使用存储过程,不能使用存储函数。
请帮我解决这个错误
在 MySQL 的 PHPMyAdmin 中创建存储函数时
MySQL said: #1415 - Not allowed to return a result set from a function
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
Everything going fine if I do the same in Stored Procedure but whenever I opt FUNCTION it gives warning add RETURN and after writing return it raises error #1415
MySQL said: #1415 Error
本例中的错误消息说明了最重要的部分:
Not allowed to return a result set from a function
此行为与 MySQL 存储过程和函数手册中记录的内容一致:
For statements that can be determined at function definition time to return a result set, a Not allowed to return a result set from a function error occurs (ER_SP_NO_RETSET).
您使用 select 语句为 @Pn
变量赋值,return 一个结果集,这在函数中是不允许的。您必须从代码中删除这些语句。 RETURN river
return 是结果 value,但不是结果 set.
我还担心您使用跨连接共享的会话变量(定义为@variable_name 的变量),因此在一个连接中同时多次调用同一函数可能会造成干扰彼此。
存储函数只应 return 单个值作为其在 return
语句中的输出。其他任何事情都被视为副作用。如果您希望 MySQL 脚本填充多个变量,那么您 必须 使用存储过程,不能使用存储函数。