MySQL возвращает GROUP_CONCAT в FUNCTION - PullRequest
1 голос
/ 26 ноября 2010

Я использую MySQL Server 7.0 на Windows Server 2008 и пытаюсь вернуть результат 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, в этом случае тип результатаэто VARCHAR или VARBINARY.

Я изменил значение group_concat_max_len со значения по умолчанию на 512, а также 256 в My.ini (и перезапустил службу MySQL). Я подтвердил изменение, используя

mysql> показывать переменные типа "% concat%";

Любая помощь приветствуется!

1 Ответ

0 голосов
/ 26 ноября 2010

Попробуйте

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