【问题标题】:MySQL Return GROUP_CONCAT in FUNCTIONMySQL 在 FUNCTION 中返回 GROUP_CONCAT
【发布时间】:2023-03-14 22:20:01
【问题描述】:

我在 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 ;

这会产生以下结果:

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%";

感谢任何帮助!

【问题讨论】:

    标签: sql mysql group-concat mysql-error-1415


    【解决方案1】:

    试试

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

    【讨论】:

    • 谢谢,杰瑞尔!这正是我正在寻找的。我有点好奇为什么我的方法不起作用……
    • @bitxwise 您的方法不起作用,因为没有 INTO 的 SELECT 无法为变量赋值。
    猜你喜欢
    • 2013-08-03
    • 1970-01-01
    • 2012-06-22
    • 1970-01-01
    • 2016-05-26
    • 2011-08-29
    • 1970-01-01
    • 2018-04-04
    • 2021-09-04
    相关资源
    最近更新 更多