Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

hil_design

Funções para Validar CPF, CNPJ e IE

Recommended Posts

Galera, tô precisando de uma mão pra criar essas funções do zero...

 

Mas acredito q será de grande ajuda a todos...

 

funcao CPF OK...

 

CREATE DEFINER = CURRENT_USER FUNCTION `isCPF`(CPF VARCHAR(11))

RETURNS tinyint(4)

NOT DETERMINISTIC

CONTAINS SQL

SQL SECURITY DEFINER

COMMENT ''

BEGIN

DECLARE INDICE, SOMA, DIG1, DIG2 INT;

 

/* Calculo do digito 1 */

SET INDICE = 1;

SET SOMA = 0;

 

WHILE (INDICE <= 9) DO

SET SOMA = SOMA + CAST(SUBSTRING(CPF, INDICE, 1) AS UNSIGNED) * (11 - INDICE);

SET INDICE = INDICE + 1;

END WHILE;

 

SET DIG1 = 11 - (SOMA % 11);

 

IF DIG1 > 9 THEN

SET DIG1 = 0;

END IF;

 

/* Calculo do digito 2 */

SET INDICE = 1;

SET SOMA = 0;

 

WHILE (INDICE <= 10) DO

SET SOMA = SOMA + CAST(SUBSTRING(CPF, INDICE, 1) AS UNSIGNED) * (12 - INDICE);

SET INDICE = INDICE + 1;

END WHILE;

 

SET DIG2 = 11 - (SOMA % 11);

 

IF DIG2 > 9 THEN

SET DIG2 = 0;

END IF;

 

/* Validando */

IF ((DIG1 = SUBSTRING(CPF, LENGTH(CPF)-1, 1))

AND (DIG2 = SUBSTRING(CPF, LENGTH(CPF), 1))

AND NOT((CPF = "11111111111")

OR (CPF = "22222222222")

OR (CPF = "33333333333")

OR (CPF = "44444444444")

OR (CPF = "55555555555")

OR (CPF = "66666666666")

OR (CPF = "77777777777")

OR (CPF = "88888888888")

OR (CPF = "99999999999")

OR (CPF = "00000000000"))

) THEN

RETURN TRUE;

ELSE

RETURN FALSE;

END IF;

 

END;

____________________________________________________

 

funcao CNPJ OK...

 

CREATE DEFINER = CURRENT_USER FUNCTION `isCNPJ`(CNPJ VARCHAR(14))

RETURNS tinyint(4)

NOT DETERMINISTIC

CONTAINS SQL

SQL SECURITY DEFINER

COMMENT ''

BEGIN

DECLARE INDICE, SOMA, DIG1, DIG2 INT;

 

/* Calculo do digito 1 */

SET INDICE = 1;

SET SOMA = 0;

 

WHILE (INDICE <= 12) DO

IF (INDICE <= 4) THEN

SET SOMA = SOMA + CAST(SUBSTRING(CNPJ, INDICE, 1) AS UNSIGNED) * (6 - INDICE);

SET INDICE = INDICE + 1;

ELSE

SET SOMA = SOMA + CAST(SUBSTRING(CNPJ, INDICE, 1) AS UNSIGNED) * (14 - INDICE);

SET INDICE = INDICE + 1;

END IF;

END WHILE;

 

SET DIG1 = 11 - (SOMA % 11);

 

IF DIG1 > 9 THEN

SET DIG1 = 0;

END IF;

 

/* Calculo do digito 2 */

SET INDICE = 1;

SET SOMA = 0;

 

WHILE (INDICE <= 13) DO

IF (INDICE <= 5) THEN

SET SOMA = SOMA + CAST(SUBSTRING(CNPJ, INDICE, 1) AS UNSIGNED) * (7 - INDICE);

SET INDICE = INDICE + 1;

ELSE

SET SOMA = SOMA + CAST(SUBSTRING(CNPJ, INDICE, 1) AS UNSIGNED) * (15 - INDICE);

SET INDICE = INDICE + 1;

END IF;

END WHILE;

 

SET DIG2 = 11 - (SOMA % 11);

 

IF DIG2 > 9 THEN

SET DIG2 = 0;

END IF;

 

/* Validando */

IF ((DIG1 = SUBSTRING(CNPJ, LENGTH(CNPJ)-1, 1))

AND (DIG2 = SUBSTRING(CNPJ, LENGTH(CNPJ), 1))) THEN

RETURN TRUE;

ELSE

RETURN FALSE;

END IF;

 

END;

____________________________________________

 

funcao INSCRUCAO ESTADUAL LOADING....

 

CREATE DEFINER = CURRENT_USER FUNCTION `isIE`(IE VARCHAR(14))

RETURNS tinyint(4)

NOT DETERMINISTIC

CONTAINS SQL

SQL SECURITY DEFINER

COMMENT ''

BEGIN

 

RETURN TRUE;

END;

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.