Mysql: 在 mysql 视图中调用 mysql 存储过程函数

Mysql: Calling mysql stored procedure function inside mysql view

我分别创建了一个存储过程和一个视图。我正在尝试从存储过程调用 minValmaxVal 到我的视图,但我不知道为什么我无法使用 MySql Workbench[=17 调用它=]

存储过程

CREATE DEFINER=`root`@`localhost` PROCEDURE `getMinMaxVal`(
    IN age int,
    OUT minVal double(8,2), 
    OUT maxVal double(8,2))
BEGIN
    SET minVal = 45.64;
    SET maxVal = 55.97;
END

MySql 查看

CREATE 
    ALGORITHM = UNDEFINED 
    DEFINER = `root`@`localhost` 
    SQL SECURITY DEFINER
VIEW `test_view` AS
    SELECT
        getMinMaxVal(`user_data`.`age`,minVal) AS `min_range`,
        getMinMaxVal(`user_data`.`age`,maxVal) AS `max_range`,
    FROM
        (`reports`
        JOIN `user_data` ON (`reports`.`uhd` = `user_data`.`id`))
    WHERE
        `reports`.`active` = 1
    ORDER BY `reports`.`created_at` DESC

您需要使用存储函数,每个值一个。

CREATE FUNCTION getMinVal(IN age INT) RETURN FLOAT
RETURN 45.64;

CREATE FUNCTION getMaxVal(IN age INT) RETURN FLOAT
RETURN 55.97;

CREATE 
    ALGORITHM = UNDEFINED 
    DEFINER = `root`@`localhost` 
    SQL SECURITY DEFINER
VIEW `test_view` AS
    SELECT
        getMinVal(`user_data`.`age`) AS `min_range`,
        getMaxVal(`user_data`.`age`) AS `max_range`,
    FROM
        (`reports`
        JOIN `user_data` ON (`reports`.`uhd` = `user_data`.`id`))
    WHERE
        `reports`.`active` = 1
    ORDER BY `reports`.`created_at` DESC