CREATE OR REPLACE FUNCTION PROD_CUSTZERO_CARDTRAB
(
    P_NRCARDAPIOTRAB NUMBER
)
RETURN VARCHAR2
AS
    V_PROD_CUSTO_ZERO NUMBER;
BEGIN
    SELECT COUNT(1)
      INTO V_PROD_CUSTO_ZERO
      FROM COMPCARDTRAB C
          LEFT JOIN RECEPRATCARDTRAB R ON R.NRCARDAPIOTRAB = C.NRCARDAPIOTRAB AND 
                                          R.CDFILAUXPRAT = C.CDFILAUXPRAT AND
                                          R.CDPRATO = C.CDPRATO
          LEFT JOIN PRODUTOCARDTRAB P ON P.NRCARDAPIOTRAB = R.NRCARDAPIOTRAB AND
                                          P.CDPRODUTO = R.CDPRODUTO 
    WHERE C.NRCARDAPIOTRAB = P_NRCARDAPIOTRAB
      AND (P.CDPRODUTO IS NULL OR (P.NRPRODLISTAPRECOCARDTRAB IS NULL AND P.VRCUSTO <= 0));

    IF V_PROD_CUSTO_ZERO > 0 THEN       
       RETURN 'S';
    ELSE
       RETURN 'N';
    END IF;
END;
/