none
EXECUTAR FUNCTION NO SQL RRS feed

  • Pergunta

  • BOA TARDE ..

    PRECISO DE INFORMAÇÃO TALVEZ SEJA ATE UMA PERGUNTA BOBA..POREM ESTOU COM ESTA DIFICULDADE

    GOSTARIA SE ALGUEM PUDESSE ME DAR UM DICA COMO FAZER A EXECUÇÃO DE UMA DETERMINATA FUNCIONN NO SELECT

    TIPO ESTA FUNCTION RETORNA SE O CPF E VALIDO OU NÃO A SELECT FICARIA COMO SE  O NOME DA FUNCITION E VALIDARCPF

    ALGUEM PODERIA ME DAR UMA AJUDA

    OBRIGADO

    domingo, 26 de fevereiro de 2012 21:19

Respostas

Todas as Respostas

  • Marcos,

    Vamos por partes:

    1 - Você esta dúvida em criar um function?

    2 - Você esta dúvida em como desenvolver esta function que realiza esta validação do CPF?

    3 - De que forma seria realizada a validação do CPF?


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    domingo, 26 de fevereiro de 2012 23:26
    Moderador
  • Bom dia

    A function ..ja esta montada ..so que em uma relação de clientes de 17000 registros ..apresentou ..40% valido e demais invalido...naum sei se a minha function esta errada..

    Esta minha

     

    creater

    FUNCTION [dbo].[CPF_VALIDO](@CPF VARCHAR(11))

    RETURNS

    CHAR(1)

    AS

    BEGIN

    DECLARE @INDICE INT,

    @SOMA

    INT,

    @DIG1

    INT,

    @DIG2

    INT,

    @CPF_TEMP

    VARCHAR(11),

    @DIGITOS_IGUAIS

    CHAR(1),

    @RESULTADO

    CHAR(1)

    SET @RESULTADO = 'N'

    /*

    Verificando se os digitos so iguais

    A Principio CPF com todos o nmeros iguais so Invlidos

    apesar de validar o Calculo do digito verificado

    EX: O CPF 00000000000 invlido, mas pelo calculo

    Validaria

    */

    SET @CPF_TEMP = SUBSTRING(@CPF,1,1)

    SET @INDICE = 1

    SET @DIGITOS_IGUAIS = 'S'

    WHILE (@INDICE <= 11)

    BEGIN

    IF SUBSTRING(@CPF,@INDICE,1) <> @CPF_TEMP

    SET @DIGITOS_IGUAIS = 'N'

    SET @INDICE = @INDICE + 1

    END;

    --Caso os digitos no sejo todos iguais Comeo o calculo do digitos

    IF @DIGITOS_IGUAIS = 'N'

    BEGIN

    --Clculo do 1 dgito

    SET @SOMA = 0

    SET @INDICE = 1

    WHILE (@INDICE <= 9)

    BEGIN

    SET @Soma = @Soma + CONVERT(INT,SUBSTRING(@CPF,@INDICE,1)) * (11 - @INDICE);

    SET @INDICE = @INDICE + 1

    END

    SET @DIG1 = 11 - (@SOMA % 11)

    IF @DIG1 > 9

    SET @DIG1 = 0;

    -- Clculo do 2 dgito }

    SET @SOMA = 0

    SET @INDICE = 1

    WHILE (@INDICE <= 10)

    BEGIN

    SET @Soma = @Soma + CONVERT(INT,SUBSTRING(@CPF,@INDICE,1)) * (12 - @INDICE);

    SET @INDICE = @INDICE + 1

    END

    SET @DIG2 = 11 - (@SOMA % 11)

    IF @DIG2 > 9

    SET @DIG2 = 0;

    -- Validando

    IF (@DIG1 = SUBSTRING(@CPF,LEN(@CPF)-1,1)) AND (@DIG2 = SUBSTRING(@CPF,LEN(@CPF),1))

    SET @RESULTADO = 'Valido'

    ELSE

    SET @RESULTADO = 'Nao valido'

    END

    RETURN @RESULTADO

    END

    GO

    segunda-feira, 27 de fevereiro de 2012 11:58
  • Marcos

    acho que este post do Paulo pode te ajudar

    http://sqlfromhell.wordpress.com/2009/11/19/validacao-de-cnpj-e-cpf/


    Att.
    Marcelo Fernandes

    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    segunda-feira, 27 de fevereiro de 2012 20:19