Função para validar o numero da CNH (Carteira Nacional de Habilitação)

FUNCTION valida_cnh (In_cnh IN VARCHAR2) RETURN BOOLEAN IS
        Dv    NUMBER;
        Dvr   NUMBER;
    BEGIN
        Dv     := substr (In_cnh, 9, 1);
        Dvr    :=
            MOD ( (2 * substr (In_cnh, 1, 1) ) + (3 * substr (In_cnh, 2, 1) ) + (4 * substr (In_cnh, 3, 1) )
                 + (5 * substr (In_cnh, 4, 1) ) + (6 * substr (In_cnh, 5, 1) ) + (7 * substr (In_cnh, 6, 1) )
                 + (8 * substr (In_cnh, 7, 1) ) + (9 * substr (In_cnh, 8, 1) )
               , 11);

        --
        IF Dv = Dvr THEN
            RETURN (TRUE);
        ELSE
            RETURN (FALSE);
        END IF;
    END;