MySQL concat - 在自定义函数内 - 不工作

时间:2013-04-03 14:32:04

标签: mysql concat stored-functions

我尝试这样做

CREATE FUNCTION getOneCentOrderIds (s text) RETURNS text
BEGIN
    DECLARE no_more_orders, ent_id INT default 0;
    DECLARE ids text;
    DECLARE orders_cur CURSOR FOR SELECT entity_id FROM sales_flat_order WHERE total_due = 0.01;
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET no_more_orders = 1;
    OPEN orders_cur;
        FETCH NEXT FROM orders_cur INTO ent_id;
        REPEAT
            SET ids = CONCAT(ids, ', ', ent_id);
            FETCH orders_cur INTO ent_id;
        UNTIL no_more_orders END REPEAT;
    CLOSE orders_cur;
    RETURN ids;
END$

但是当我执行该函数时,我得到null。

如果我只是删除concat并离开SET ids = ent_id,我会按预期获得光标中的最后一个id。

我该如何进行连接?

2 个答案:

答案 0 :(得分:0)

不是创建函数,而是可以在查询中简单地完成上述操作

SELECT group_concat(entity_id) FROM sales_flat_order WHERE total_due = 0.01;

答案 1 :(得分:0)

如果concat()函数的任何参数为NULL,则返回NULL。试试

DECLARE ids text DEFAULT '';

将确保第一次调用CONCAT没有NULL参数。