USE [Banco de Dados]
GO
/****** Object: UserDefinedFunction [dbo].[FN_VALIDA_CPF] Script Date: 12/16/2010 17:22:10 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE FUNCTION [dbo].[FN_VALIDA_CPF]
(
@CPF VARCHAR(14)
)
RETURNS BIT AS
BEGIN
DECLARE @NEW_CPF VARCHAR(14)
DECLARE @CPF2 VARCHAR(14)
DECLARE @X INT
DECLARE @FN_VALIDA_CPF BIT
SET @NEW_CPF = ''
SET @X = 0
SET @FN_VALIDA_CPF = 1
SELECT @FN_VALIDA_CPF = (CASE RTRIM(LTRIM(@CPF))
WHEN '00000000000' THEN 0
WHEN '11111111111' THEN 0
WHEN '22222222222' THEN 0
WHEN '33333333333' THEN 0
WHEN '44444444444' THEN 0
WHEN '55555555555' THEN 0
WHEN '66666666666' THEN 0
WHEN '77777777777' THEN 0
WHEN '88888888888' THEN 0
WHEN '99999999999' THEN 0
END)
IF @FN_VALIDA_CPF = 0
RETURN @FN_VALIDA_CPF
SET @FN_VALIDA_CPF = 0
DECLARE @SOMA INT
DECLARE @DV1 INT
DECLARE @DV2 INT
DECLARE @DVS CHAR(2)
SET @SOMA = 0
SET @DV1=0
SET @DV2=0
SET @DVS = ''
WHILE (@X
SET @NEW_CPF=@NEW_CPF + SUBSTRING(@CPF,@X,1)
END
IF ISNUMERIC(@NEW_CPF)=0 RETURN 0
SET @CPF = @NEW_CPF
SET @X=0
WHILE (@X<9) BEGIN
SET @X = @X + 1
SET @SOMA = @SOMA + (11-@X) * (CONVERT(int,SUBSTRING(@CPF,@X,1)))
END
SET @DV1 = 11 - (@SOMA % 11)
IF @DV1 IN (10,11)
SET @DV1=0
SET @CPF2 = @CPF + CONVERT(VARCHAR,@DV1)
SET @SOMA = 0
SET @X = 0
WHILE (@X <=9) BEGIN
SET @X = @X + 1
SET @SOMA = @SOMA + (12-@X)*(CONVERT(INT,SUBSTRING(@CPF2,@X,1)))
SET @DV2 = 11 - (@SOMA % 11)
END
IF @DV2 IN (10,11)
SET @DV2=0
SET @DVS = CONVERT(VARCHAR,@DV1) + CONVERT(VARCHAR,@DV2)
IF @DVS = RIGHT(@CPF,2)
SET @FN_VALIDA_CPF = 1
ELSE
SET @FN_VALIDA_CPF = 0
RETURN (@FN_VALIDA_CPF)
END
Nenhum comentário:
Postar um comentário