1

我在 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%”;

任何帮助表示赞赏!

4

1 回答 1

0

尝试

SELECT GROUP_CONCAT(MyColumn)
FROM   MyTable
WHERE  MyID = MyVar INTO @MyRetVar;
RETURN @MyRetVar;
于 2010-11-26T05:45:08.707 回答