首页 > 解决方案 > 如何在 mysql 中创建具有案例逻辑的函数?

问题描述

尝试在 MYSQL 中创建存储函数,将预算状态定义为超出预算、低于预算或超出预算。这是我构建的功能:

Delimiter $$

create function budgetCompare (hours dec(10,2), budget FLOAT(11,2), rate Float(7.2)) returns varchar(20)
deterministic
Begin
Declare status_ varchar(20);
    CASE
        when sum(hours * rate)/budget * 100 > 110 THEN Set status_ = "Over Budget";
        when sum(hours * rate)/budget * 100 < 90 THEN SET status_ = "Under Budget";
        else SET status_ = "On Budget";
    END CASE;
RETURN (status_);
END $$

Delimiter ;

但是,当我尝试使用该错误时,出现错误:

select p.projectNo, budgetCompare(hours, budget, rate)
from project as p
join projectteam using (projectNo)
join projectrole using (roleNo)
group by projectNo; 

error: Error Code: 1111. Invalid use of group function

我以前尝试过这个功能,并且可以正常工作。该函数将创建但不会运行。

我一直在努力修复它,但现在无法透过树林看到阿甘。

运行 sum(rate * hours)/budget * 100 在常规选择语句中有效,但不适用于该函数。

标签: mysqlstored-functions

解决方案


推荐阅读