Temat: Problem z kursorek
Witam,
mam dość kłopotliwy i zapewne łatwy do rozwiązania błąd, który od kilku dni spędza mi sen z powiek. Mam taki oto kod:
CREATE FUNCTION czas_pracy (integer,date,date)
RETURNS time
AS $$
DECLARE
id ALIAS FOR $1;
od ALIAS FOR $2;
do ALIAS FOR $3;
razem time:='00:00';
id_motor integer;
data_k date;
cz_wyj time;
cz_przyj time;
BEGIN
--BEGIN TRANSACTION;
DECLARE cz_pr CURSOR
FOR SELECT id_motorniczy, data_kurs, czas_wyjazd, czas_przyjazd FROM kurs;
--OPEN cz_pr;
FETCH 1 FROM cz_pr INTO id_motor, data_k, cz_wyj, cz_przyj;
WHILE FOUND LOOP
IF id_motor=id AND data_k BETWEEN od AND do AND cz_przyj IS NOT NULL
THEN
razem:=razem + (cz_przyj - cz_wyj);
END IF;
FETCH 1 FROM cz_pr INTO id_motor, data_k, cz_wyj, cz_przyj;
END LOOP;
CLOSE cz_pr;
--COMMIT TRANSACTION;
RETURN razem;
END;
$$ LANGUAGE 'PLPGSQL';
i nie mam zielonego pojęcia czemu nie działa, więc mam taką małą prośbę - moglibyście na to zerknąć i pomóc mi rozwiązać ten problem?
Z góry dzięki za poświęcenie czasu