MySQL在FUNCTION中返回GROUP_CONCAT

时间:2010-11-26 05:27:17

标签: sql mysql group-concat mysql-error-1415

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

这产生以下结果:

  

错误1415(0A000):不允许   从函数

返回结果集

我检查了手册(http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html)并阅读了

  

结果类型为TEXT或BLOB,除非   group_concat_max_len小于或   等于512,在这种情况下结果   type是VARCHAR或VARBINARY。

我将group_concat_max_len的值从默认值更改为512,在My.ini中也更改了256(并重新启动了MySQL服务)。我已使用

验证了更改
  

的MySQL>显示变量,如"%concat%&#34 ;;

感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

尝试

SELECT GROUP_CONCAT(MyColumn)
FROM   MyTable
WHERE  MyID = MyVar INTO @MyRetVar;
RETURN @MyRetVar;