CREATE or REPLACE function get_actual_vpf_effective_date (v_contract_nr IN number, v_territory_nr IN number, v_min_equip IN number) return date IS v_count number := 0; v_date date; CURSOR rec IS select EC.contract_nr, EC.EQUIPMENT_NR, sm.TERRITORY_NR, el.FROM_DATE, el.TO_DATE from cms_equipment_contract EC, cms_equipment_location EL, cms_screen_master SM where EL.screen_master_nr = SM.screen_master_nr and EL.equipment_nr = EC.equipment_nr and EC.CONTRACT_NR = v_contract_nr and sm.territory_nr = v_territory_nr order by el.from_date; BEGIN FOR get_rec in rec LOOP v_count := v_count + 1; if v_count = v_min_equip THEN v_date := get_rec.from_date; END IF; END LOOP; RETURN v_date; END; / show errors