2010-11-26 69 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