Создание представления с функцией внутри - PullRequest
0 голосов
/ 17 марта 2019

Я пытаюсь создать представление с функцией внутри. Когда я хочу посмотреть на созданный вид, я получаю сообщение об ошибке

1318 - Неверное количество аргументов для функции ret_stat; ожидается 1, получил 0

Это моя функция:

DELIMITER //
CREATE FUNCTION ret_stat (ret_stat CHAR (50))
RETURNS CHAR DETERMINISTIC
BEGIN
DECLARE result CHAR;
SET result = "";
SET result =
    CASE (result)
         WHEN (65-(YEAR(CURDATE()) - YEAR(bdate))) > 5 THEN '5 plus years'
         WHEN (65-(YEAR(CURDATE()) - YEAR(bdate))) > 4 THEN '5 years left'
         WHEN (65-(YEAR(CURDATE()) - YEAR(bdate))) > 3 THEN '4 years left'
         WHEN (65-(YEAR(CURDATE()) - YEAR(bdate))) > 2 THEN '3 years left'
         WHEN (65-(YEAR(CURDATE()) - YEAR(bdate))) > 1 THEN '2 years left'
         WHEN (65-(YEAR(CURDATE()) - YEAR(bdate))) = 1 THEN '1 year left'
         WHEN (65-(YEAR(CURDATE()) - YEAR(bdate))) = 0 THEN 'Soon retirement'
         WHEN (65-(YEAR(CURDATE()) - YEAR(bdate))) < 0 THEN 'Retired'
         END;
RETURN result;
END //
DELIMITER ;

... и это мой запрос на мой взгляд:

 CREATE VIEW ret_stat_view AS
 SELECT fname, lname, faculty, ret_stat()
 FROM employees;

1 Ответ

0 голосов
/ 17 марта 2019

Параметр функции должен быть bdate в качестве даты, а возвращаемое значение - TEXT, результат - также TEXT, CASE не нуждается ни в каком параметре.... и работает как надо!

KAPOW downvoters!★★★★★

Veni, Vidi, Solvī!

...