1

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)をチェックして読んだ

group_concat_max_len が 512 以下でない限り、結果の型は TEXT または BLOB です。この場合、結果の型は VARCHAR または VARBINARY です。

group_concat_max_len の値をデフォルト値から 512 に変更し、My.ini で 256 に変更しました (そして MySQL サービスを再起動しました)。を使用して変更を確認しました

mysql> 「%concat%」などの変数を表示します。

どんな助けでも大歓迎です!

4

1 に答える 1

0

試す

SELECT GROUP_CONCAT(MyColumn)
FROM   MyTable
WHERE  MyID = MyVar INTO @MyRetVar;
RETURN @MyRetVar;
于 2010-11-26T05:45:08.707 に答える