MySQL自定义Commission_Sales函数报错求助:阶梯计算佣金
修复Commission_Sales函数的语法错误
你的代码存在几处语法问题,修正要点如下:
- 多语句函数必须把逻辑放在
BEGIN...END块内 - 变量声明
DECLARE必须放在BEGIN块的最开头,不能写在分支逻辑里 - IF条件判断需要用
END IF;闭合 - 恢复默认分隔符的命令格式错误,正确写法是
DELIMITER ;
修正后的完整代码
DELIMITER // CREATE FUNCTION Commission_Sales (SALES_PRICE DECIMAL(4,2), COST_PRICE DECIMAL(4,2)) RETURNS DECIMAL(4,2) DETERMINISTIC BEGIN DECLARE Commission DECIMAL(4,2); IF SALES_PRICE >= 50.00 THEN SET Commission = (SALES_PRICE - COST_PRICE) * 0.2; ELSE SET Commission = (SALES_PRICE - COST_PRICE) * 0.1; END IF; RETURN Commission; END // DELIMITER ;
简化版代码(无需声明变量)
如果逻辑简单,也可以直接通过条件函数返回结果,减少代码量:
DELIMITER // CREATE FUNCTION Commission_Sales (SALES_PRICE DECIMAL(4,2), COST_PRICE DECIMAL(4,2)) RETURNS DECIMAL(4,2) DETERMINISTIC BEGIN RETURN IF(SALES_PRICE >= 50.00, (SALES_PRICE - COST_PRICE) * 0.2, (SALES_PRICE - COST_PRICE) * 0.1); END // DELIMITER ;
内容的提问来源于stack exchange,提问作者Keri
相关产品推荐
相关产品推荐

