CREATE OR REPLACE FUNCTION F_RETORNA_CICLOM( 
  P_CDFILIAL           IN     FILIAL.CDFILIAL%TYPE, 
  P_CDCIA              IN     COMPANHIA.CDCIA%TYPE, 
  P_NRVOO              IN     VOO.NRVOO%TYPE, 
  P_CDTRECHO           IN     VOOTRECHO.CDTRECHO%TYPE, 
  P_DTHRPLAVOOPV       IN     PLANOVOOM.DTHRPLAVOOPV%TYPE, 
  P_NRSERVICOCIAFILI   IN     SERVICOCIAFILI.NRSERVICOCIAFILI%TYPE, 
  P_CDCLASSE           IN     CLASSE.CDCLASSE%TYPE,
  P_CDCICLO            IN     CICLO.CDCICLO%TYPE DEFAULT NULL
) RETURN VARCHAR2
AS
   V_CICLO VARCHAR2(20);
   V_CDCICLO_UNICO VARCHAR2(4);
BEGIN
   SELECT MAX(CF.CDCICLO)
    INTO  V_CDCICLO_UNICO
    FROM   CIAFILI CF
    WHERE  CF.CDFILIAL = P_CDFILIAL AND 
           CF.CDCIA    = P_CDCIA;
   IF P_CDCICLO IS NOT NULL THEN
      IF P_CDCICLO = V_CDCICLO_UNICO THEN
         RETURN V_CDCICLO_UNICO;
      END IF;
   END IF;
   BEGIN
      RETORNA_CICLOM(P_CDFILIAL, P_CDCIA, P_NRVOO, P_CDTRECHO, P_DTHRPLAVOOPV, P_NRSERVICOCIAFILI, P_CDCLASSE, V_CICLO);
   EXCEPTION
     WHEN OTHERS THEN
       RETURN NULL;
   END;
   RETURN V_CICLO;
END;
/