我在 Windows Server 2008 上使用 MySQL Server 7.0,并试图在函数中返回 GROUP_CONCAT 的结果。一般SQL如下:
DELIMITER ;
DROP FUNCTION IF EXISTS MyFunction;
DELIMITER $$
CREATE FUNCTION MyFunction(MyVar INT)
RETURNS VARCHAR(255)
BEGIN
SELECT @MyRetVar = GROUP_CONCAT(MyColumn)
FROM MyTable
WHERE MyID = MyVar;
RETURN @MyRetVar;
END$$
DELIMITER ;
这会产生以下结果:
ERROR 1415 (0A000): 不允许从函数返回结果集
我检查了手册(http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html)并阅读
结果类型为 TEXT 或 BLOB,除非 group_concat_max_len 小于或等于 512,在这种情况下,结果类型为 VARCHAR 或 VARBINARY。
我在 My.ini 中将 group_concat_max_len 的值从默认值更改为 512 和 256(并重新启动了 MySQL 服务)。我已经使用验证了更改
mysql> 显示变量,如“%concat%”;
任何帮助表示赞赏!