我正在创建一个函数,作为数据库项目的一部分,在大学里有一个小组。我希望函数返回比赛完成的最快时间并尝试以下代码。我收到一个错误,因为我认为它试图返回多个值,但不能想到另一种方法来做到这一点。任何帮助表示赞赏。
DELIMITER //
CREATE OR REPLACE FUNCTION calc_race_winner(in_race_id INT)
RETURNS FLOAT(10)
BEGIN
CREATE TEMPORARY TABLE IF NOT EXISTS temp_result AS (
SELECT
(TIME_TO_SEC(TIMEDIFF(ps_result.finish_time, ps_race.start_time)) / 60) AS finish_time_mins
FROM ps_race
INNER JOIN ps_result ON ps_race.race_id = ps_result.race_id
);
SELECT *
FROM temp_result
WHERE ps_race.race_id = in_race_id
ORDER BY finish_time_mins ASC LIMIT 1;
RETURN finish_time_mins;
END//
DELIMITER ;
答案 0 :(得分:1)
定义一个局部变量以读取完成时间并返回相同的内容。
begin
declare finish_time_calculated_in_mins int default 0;
create temp.....
....
select finish_time_mins
into finish_time_calculated_in_mins
from temp_result
where ps_race.race_id = in_race_id
order by finish_time_mins asc
limit 1;
return finish_time_calculated_in_mins;
end;