У меня есть хранимая процедура, которую я пытаюсь создать с параметрами.
DELIMITER //
CREATE PROCEDURE insert_avg(IN area INT, IN checkid INT, IN legend INT)
this_proc: BEGIN
SELECT
CASE legend
WHEN 1 THEN "Input_Day"
WHEN 2 THEN "Input_Week"
WHEN 3 THEN "Input_Month"
ELSE LEAVE this_proc
END CASE;
INTO @LEGEND;
INSERT INTO
`input_teamboards`
(
`Input_KPI`,
`Input_Month`,
`Input_Week`,
`Input_Day`,
`Input_Value`,
`Input_Comparison`,
`Input_Area`,
`Input_Created`
)
VALUES
(
7,
IFNULL(SELECT `Input_Month` FROM `input` WHERE `check_id` = checkid, NULL, MONTH(NOW())),
IFNULL(SELECT `Input_Week` FROM `input` WHERE `check_id` = checkid, NULL, WEEKOFYEAR(NOW())),
IFNULL(SELECT `Input_Day` FROM `input` WHERE `check_id` = checkid, NULL, DAYOFYEAR(NOW())),
(SELECT
AVG(`Input_value`)
FROM
`input`
WHERE
`Area_ID` = area AND @LEGEND = 1),
2,
area,
NOW()
)
END//
DELIMITER ;
Как видите, переменная @LEGEND
используется как часть подзапроса для имени столбца ниже.,
Проблема, с которой я сталкиваюсь, связана с оператором case, он продолжает выдавать ошибки внутри оператора case:
"# 1064 - у вас ошибка в синтаксисе SQL; проверьтеруководство, соответствующее вашей версии сервера MariaDB, для правильного синтаксиса, который следует использовать рядом с 'LEAVE this_proc END CASE; INTO @LEGEND; INSERT INTO input_teamboards
' в строке 8 "
Я использовал этиссылки пока, но застряли на том, что я делаю не так? Mysql Сохранение переменной с результатом SELECT CASE Mysql - Как выйти / выйти из хранимой процедуры инструкция case в хранимой процедуре Любая помощь приветствуется!