Кто-нибудь может объяснить, почему эта функция не работает в mariaDB? - PullRequest
0 голосов
/ 02 ноября 2019

Может кто-нибудь помочь с кодом ниже? Я новичок в 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 голосов
/ 02 ноября 2019

Если вы переименуете параметр experience в hours (или в переменные часы), функция должна работать.

Однако зачем вам функция, если вы можете обрабатывать это в операторе?

SELECT singer_id, 
case experience < 1000 THEN 'SILVER' WHEN experience < 4000 THEN 'GOLD' ELSE 'PLATINUM' END
FROM experiencelog
ORDER BY singer_id;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...