mysql函数变量设置不起作用

时间:2018-05-28 11:14:36

标签: mysql sql mysql-function

我正在编写一个应该返回浮动值的函数。

0.00

该函数仅返回值(SELECT due_amount FROM ( SELECT id, MAX(date), due_amount, user_id FROM lunch_transaction GROUP BY user_id HAVING user_id = user) l); ,即使该值应为其他值。

仅运行此查询:

{{1}}

虽然提供了正确的输出。

如何将查询的输出设置为变量?

1 个答案:

答案 0 :(得分:0)

使用可能与列名冲突的变量名是非常不好的做法。此外,子查询似乎非常不必要。我会尝试更像这样的东西:

BEGIN
    DECLARE v_due_amount DECIMAL(9,2);

    SELECT v_due_amount := l.due_amount
    FROM lunch_transaction l
    WHERE l.user_id = in_user;  -- I'm guessing `user` is also a parameter

    IF v_due_amount IS NULL THEN
        SET v_due_amount = 0.00;
    END IF;
    RETURN v_due_amount;
END;

您的版本在子查询中有一个聚合函数。这没有任何意义,因为due_amount不是聚合函数的参数。这个逻辑应该是:

    SELECT v_due_amount := SUM(l.due_amount)
    FROM lunch_transaction l
    WHERE l.user_id = in_user;  -- I'm guessing `user` is also a variable