代码之家  ›  专栏  ›  技术社区  ›  bitxwise

函数中的MySQL返回组

  •  1
  • bitxwise  · 技术社区  · 14 年前

    我在WindowsServer2008上使用MySQLServer7.0,并试图在函数中返回组连接的结果。通用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 )并阅读

    结果类型为文本或BLOB,除非 组concat_max_len小于或 等于512,在这种情况下 类型是VARCHAR或VARBINARY。

    我在My.in I中将group_concat_max_len的值从默认值更改为512,也更改为256(并重新启动MySQL服务)。我已经用

    mysql>显示变量,如“%concat%”;

    感谢您的帮助!

    1 回复  |  直到 14 年前
        1
  •  0
  •   ajreal    14 年前

    尝试

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