/*
Cristiano Martins Alves
Para testar: SELECT DBO.CPF_VALIDO('16195473247')
*/
CREATE FUNCTION 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 são iguais
A Principio CPF com todos o números iguais são Inválidos
apesar de validar o Calculo do digito verificado
EX: O CPF 00000000000 é inválido, 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 não sejão todos iguais Começo o calculo do digitos
IF @DIGITOS_IGUAIS = 'N'
BEGIN
--Cálculo do 1º dígito
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;
-- Cálculo do 2º dígito }
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 = 'S'
ELSE
SET @RESULTADO = 'N'
END
RETURN @RESULTADO
END
sábado, 20 de outubro de 2007
Função para validar CPF no SQL Server
Postado por
Cristiano Martins Alves
às
05:41
Marcadores: SQL Server
Assinar:
Postar comentários (Atom)
Perfil
- Cristiano Martins Alves
- São Paulo, SP, Brazil
- Programador Delphi desde 2000, desenvolvendo aplicações Client/Server. Colunista da Revista ActiveDelphi Membro Fundador do DUG-SP ( www.dug-sp.com )
Blogs de Amigos
Exemplos
Search
Marcadores
- Actions (1)
- AJAX (1)
- API (2)
- Arquivos (1)
- ASP.NET (1)
- Blackfish SQL (1)
- Borcon (3)
- CodeGear (2)
- Datas (1)
- Datasnap (3)
- DBExpress (1)
- DBGrid (2)
- Delimitados (1)
- Delphi (1)
- Delphi2009 (3)
- DUG (1)
- ECO (1)
- Embarcadero (1)
- ExtractStrings (1)
- Firebird (1)
- Framework (1)
- Funcões (2)
- Herança Visual (1)
- IDE (1)
- Join (1)
- Lookup (1)
- POO (1)
- RAD Studio 2007 (1)
- RN's (1)
- SQL Server (1)
- StringList (2)
- Strings (2)
- TextFile (1)
- Tiburon (2)
- TypeLibrary (1)
- UML (1)
0 comentários:
Postar um comentário