Salve
Sto cercando di fare una funzione che mi ritorna latitudine e longitudine del viaggio precedente per poi calcolare la distanza in km. tra i due pjnti.
Questa la funzione:
DELIMITER $$ CREATE FUNCTION `READ_PREV_TRIP` (lk_vehicle VARCHAR(15), lk_id INTEGER, lk_date DATETIME, lk_what_field VARCHAR(30)) RETURN FLOAT BEGIN DECLARE ws_prev_lat FLOAT; DECLARE ws_prev_lng FLOAT; DECLARE ws_prev_id FLOAT; BEGIN DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET ws_prev_lat := ''; SET ws_prev_lng := ''; SET ws_prev_id := ''; END; BEGIN SET ws_prev_lat := ''; SET ws_prev_lng := ''; SET ws_prev_id := ''; BEGIN select `ID`, `LAT`, `LNG` into ws_prev_id, ws_prev_lng, ws_lon_prec from `positions` f1 where `vehicle` = lk_veichle and (str_to_date(`date_time`,'%Y-%m-%d %H:%i:%s') = (select max(str_to_date(`date_time`,'%Y-%m-%d %H:%i:%s')) from `positions` f2 where f2.`vehicle` = f1.`vehicle` and str_to_date (f2.`date_time`,'%Y-%m-%d %H:%i:%s') < str_to_date(lk_data,'%Y-%m-%d %H:%i:%s') or f2.`id` < lk_id)); IF lk_what_field = 'ID' THEN RETURN ws_prev_id; END IF; IF lk_what_field = 'PREV_LAT' THEN RETURN ws_prev_lat; END IF; IF lk_what_field = 'PREV_LNG' THEN RETURN ws_prev_lng; END IF; END; END; ENDRichiamo poi la funzione per creare una vista che mi restituisce l'errore of sync. Cosa sto sbagliando?