谁能解释为什么此功能在mariaDB中不起作用?

时间:2019-11-01 21:37:51

标签: mariadb

任何人都可以帮助以下代码吗?我是mariaDB的新手,正在努力创建该功能。我什至不确定我是否高亮并正确执行它。无论我做什么,都会遇到很多错误。

DELIMITER $$

CREATE FUNCTION singerExperience(
    experience DECIMAL(10,2)
) 
RETURNS VARCHAR(20)
DETERMINISTIC
BEGIN
    DECLARE singerExperience VARCHAR(20);

    IF hours > 4000 THEN
        SET singerExperience = 'PLATINUM';
    ELSEIF (hours >= 4000 AND 
            hours <= 1000) THEN
        SET singerExperience = 'GOLD';
    ELSEIF hours < 1000 THEN
        SET singerExperience = 'SILVER';
    END IF;
    RETURN (singerExperience);
END $$
DELIMITER ;

SELECT singer_id, singerExperience(experience)
FROM experiencelog
ORDER BY singer_id;

1 个答案:

答案 0 :(得分:0)

如果您将参数experience重命名为hours(或可变的工作时间),则该功能应该起作用。

但是,如果可以在语句中处理函数,为什么还需要一个函数?

SELECT singer_id, 
case experience < 1000 THEN 'SILVER' WHEN experience < 4000 THEN 'GOLD' ELSE 'PLATINUM' END
FROM experiencelog
ORDER BY singer_id;