2010-11-26 62 views
1

我在Windows Server 2008上使用MySQL Server 7.0,并试图在函数中返回GROUP_CONCAT的结果。一般SQL如下:MySQL返回函数中的GROUP_CONCAT

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%”这样的变量;

任何帮助表示赞赏!

回答

0

尝试

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

谢谢,ajreal!这正是我正在寻找的。我有点好奇,为什么我的方法没有工作,虽然... – bitxwise 2010-11-26 11:09:52