create or replace FUNCTION BUSCA_NIVEL_PRODUTO(
   P_CDARVPROD    IN PRODUTO.CDARVPROD %TYPE,
   P_CDNVPRODUTO  IN PRODUTO.CDNVPRODUTO%TYPE) RETURN VARCHAR2 IS

   V_TAMNIVEL    INTEGER;
   V_CDARVNIVEL  PRODUTO.CDARVPROD%TYPE;
   V_RESULT VARCHAR2(255);
BEGIN
   V_RESULT := '';
   SELECT LENGTH(MAX(P.CDARVPROD))
     INTO V_TAMNIVEL
     FROM PRODUTO P
    WHERE  P.CDNVPRODUTO = P_CDNVPRODUTO;
    
   SELECT SUBSTR(MAX(P.CDARVPROD),1,V_TAMNIVEL)
     INTO V_CDARVNIVEL
     FROM PRODUTO P
    WHERE P.CDARVPROD = P_CDARVPROD;
    
   SELECT MAX(P.NMPRODUTO)
     INTO V_RESULT
     FROM PRODUTO P
     WHERE P.CDARVPROD = V_CDARVNIVEL;
        
   RETURN(V_RESULT);
END;
/