2014-04-30 43 views
0

我正在創建一個函數,作爲一個數據庫項目的一部分,在大學裏有一個組。我希望函數返回比賽完成的最快時間,並嘗試了以下代碼。我收到一個錯誤,因爲我認爲它試圖返回多個值,但不能想到另一種方式來做到這一點。任何幫助表示讚賞。創建MYSQL函數來計算時間差異時出錯

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 ; 

回答

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; 
+0

工作,謝謝 – Janice