MySQL возвращает GROUP_CONCAT в FUNCTION

Я использую 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%";

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


person bitxwise    schedule 26.11.2010    source источник


Ответы (1)


Пытаться

SELECT GROUP_CONCAT(MyColumn)
FROM   MyTable
WHERE  MyID = MyVar INTO @MyRetVar;
RETURN @MyRetVar;
person ajreal    schedule 26.11.2010
comment
Спасибо, аджреал! Это именно то, что я ищу. Мне немного любопытно, почему мой подход не сработал ... - person bitxwise; 26.11.2010
comment
@bitxwise Ваш подход не сработал, потому что SELECT без INTO не может присваивать значения переменным. - person fredt; 26.11.2010