CREATE FUNCTION dbo.IsValidCPF
IF
EXISTS( SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[IsValidCPF]') ANDxtype
in (N'FN', N'IF', N'TF') )BEGIN
DROP FUNCTION [dbo].[IsValidCPF]END
GO
CREATE
FUNCTION dbo.IsValidCPF(
@CPF varchar
(11))
RETURNS
bitAS
BEGIN
DECLARE @Digito int DECLARE @Index int DECLARE @Modulo int DECLARE @Soma1 int DECLARE @Soma2 int DECLARE @DigitoVerificador1 int DECLARE @DigitoVerificador2 intSET @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 ENDSET @Modulo = @Soma1 % 11
IF @Modulo < 2
BEGIN
SET @DigitoVerificador1 = 0 END ELSE BEGIN SET @DigitoVerificador1 = 11 - @Modulo ENDSET @Soma2 = @Soma2 + (2 * @DigitoVerificador1)
SET @Modulo = @Soma2 % 11IF @Modulo < 2
BEGIN
SET @DigitoVerificador2 = 0 END ELSE BEGIN SET @DigitoVerificador2 = 11 - @Modulo ENDIF SUBSTRING(@CPF, 10, 1) = CAST(@DigitoVerificador1 AS varchar(1)) AND
SUBSTRING(@CPF, 11, 1) = CAST(@DigitoVerificador2 AS varchar(1)) BEGIN RETURN 1 ENDRETURN 0
END
GO