EXECUTAR FUNCTION NO SQL
-
domenica 26 febbraio 2012 21:19
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
Tutte le risposte
-
domenica 26 febbraio 2012 23:26Moderatore
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]
-
lunedì 27 febbraio 2012 11:58
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
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
END
GO
-
lunedì 27 febbraio 2012 20:19
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- Contrassegnato come risposta Junior Galvão - MVPMVP, Moderator martedì 13 marzo 2012 17:30

