CREATE FUNCTION dbo.IsValidCPF

IF EXISTS(

SELECT *

FROM dbo.sysobjects

WHERE id = object_id(N'[dbo].[IsValidCPF]') AND

xtype in (N'FN', N'IF', N'TF')

)

BEGIN

DROP FUNCTION [dbo].[IsValidCPF]

END

GO

CREATE FUNCTION dbo.IsValidCPF

(

@CPF varchar(11)

)

RETURNS bit

AS

BEGIN

DECLARE @Digito int

DECLARE @Index int

DECLARE @Modulo int

DECLARE @Soma1 int

DECLARE @Soma2 int

DECLARE @DigitoVerificador1 int

DECLARE @DigitoVerificador2 int

 

SET @Index = 1

SET @Soma1 = 0

SET @Soma2 = 0

 

WHILE @Index <= 9

BEGIN

SET @Digito = CAST(SUBSTRING(@CPF, @Index, 1) AS int)

SET @Soma1 = @Soma1 + ((11 - @Index) * @Digito)

SET @Soma2 = @Soma2 + ((12 - @Index) * @Digito)

SET @Index = @Index + 1

END

 

SET @Modulo = @Soma1 % 11

IF @Modulo < 2

BEGIN

SET @DigitoVerificador1 = 0

END

ELSE

BEGIN

SET @DigitoVerificador1 = 11 - @Modulo

END

 

SET @Soma2 = @Soma2 + (2 * @DigitoVerificador1)

SET @Modulo = @Soma2 % 11

 

IF @Modulo < 2

BEGIN

SET @DigitoVerificador2 = 0

END

ELSE

BEGIN

SET @DigitoVerificador2 = 11 - @Modulo

END

 

IF SUBSTRING(@CPF, 10, 1) = CAST(@DigitoVerificador1 AS varchar(1)) AND

SUBSTRING(@CPF, 11, 1) = CAST(@DigitoVerificador2 AS varchar(1))

BEGIN

RETURN 1

END

 

RETURN 0

END

GO

 

1 Comment

Comments have been disabled for this content.