set term ^;
create procedure p_abfrageaktuellerkurs
(kurs_id integer,
aktuelleUhrzeit time,
datum date)
returns
(aktuellekurs_id Integer)
as
declare variable ankunftszeit time;
declare variable abfahrtszeit time;
begin
for select abfahrt
from jf_fahrplan f
where f.kurs_id = :kurs_id
and f.ankunft is null
into :abfahrtszeit
do
for select ankunft
from jf_fahrplan f
where f.kurs_id = :kurs_id
and f.abfahrt is null
into :ankunftszeit
do
begin
if (:abfahrtszeit < :ankunftszeit) then
select distinct AktuelleKurse_ID
from tagesfahrplan t, TF_AktuelleKurse ak, jf_fahrplan f
where (t.gueltig_am = :datum)
and (t.tagesfahrplan_id = ak.tagesfahrplan_id)
and (ak.kurs_id = :kurs_id)
and (:abfahrtszeit <= :aktuelleUhrzeit)
and (:ankunftszeit >= :aktuelleUhrzeit)
into :aktuellekurs_id;
else
select distinct AktuelleKurse_ID
from tagesfahrplan t, TF_AktuelleKurse ak, jf_fahrplan f
where (t.gueltig_am = :datum)
and (t.tagesfahrplan_id = ak.tagesfahrplan_id)
and (ak.kurs_id = :kurs_id)
and ((:abfahrtszeit <= :aktuelleUhrzeit)
or (:ankunftszeit >= : aktuelleUhrzeit))
into :aktuellekurs_id;
end
suspend;
end^
set term ;^