IF EXISTS(SELECT * 
          FROM SYSOBJECTS O, SYSUSERS U
          WHERE O.NAME = 'LIMITE_SEGURAN' AND
                TYPE   = 'FN' AND
                U.UID  = O.UID AND
                U.NAME = USER )
DROP FUNCTION LIMITE_SEGURAN
GO 

CREATE FUNCTION LIMITE_SEGURAN
   (@P_CDFILIAL VARCHAR(04),
    @P_CDARVPROD VARCHAR(10)) RETURNS VARCHAR
AS BEGIN
   DECLARE @V_NRLIMISEGU DOUBLE PRECISION;
   SET @V_NRLIMISEGU   = 0;
   
   SELECT
    @V_NRLIMISEGU = ISNULL(MAX(NRLIMISEGU), 0)
    
   FROM
      LIMISEGPROD,
      PRODUTO
   WHERE
      (LIMISEGPROD.CDPRODUTO = PRODUTO.CDPRODUTO) AND
      (LIMISEGPROD.CDFILIAL = @P_CDFILIAL)        AND
      (PRODUTO.CDARVPROD   =    (SELECT  /*+ INDEX (A PK_LIMISEGPROD) INDEX (B PK_PRODUTO) */
                                   MAX(CDARVPROD)
                                FROM
                                   LIMISEGPROD A,
                                   PRODUTO B
                                WHERE
                                   (A.CDPRODUTO = B.CDPRODUTO) AND
                                   (LIMISEGPROD.CDFILIAL = A.CDFILIAL) AND
                                   (CHARINDEX(A.CDPRODUTO, @P_CDARVPROD) = 1)) 
                                  );
      RETURN(@V_NRLIMISEGU);
END;
GO

-- VERSAO --
EXEC ATUVEROBJ 'LIMITE_SEGURAN','5.60.000';
GO   