Conforme eu havia publicado em Junho de 2004 (http://www.linhadecodigo.com/Dica.aspx?id=1158)
Módulo 11 para cálculo do dígito verificador de Agência, Código de Cedente, Nosso Numero e etc.
Eu passei um bom tempo procurando na web um script da função Modulo 11, para o MSSQLServer, e não encontrei. Então resolvi desenvolver uma e compartilhar com vocês.
Caso ocorra algum problema, por favor entre em contato.
Abraço,
Elton Bicalho
Em seguida está o código do script.
CREATE FUNCTION Modulo11(@VALOR varchar(60))
RETURNS CHAR(1)
AS
BEGIN
DECLARE
@SOMA INT,
@CONTADOR INT,
@PESO INT,
@DIGITO INT,
@RETORNO CHAR(1),
@BASE INT,
@RESTO BIT
SET @SOMA = 0
SET @PESO = 2
SET @BASE = 9
SET @RESTO = 0
SET @CONTADOR = Len(@VALOR)
LOOP:
BEGIN
SET @SOMA = @SOMA + (Convert(int, SubString(@VALOR, @CONTADOR, 1)) *
@PESO)
IF (@PESO < @BASE)
SET @PESO = @PESO + 1
ELSE
SET @PESO = 2
SET @CONTADOR = @CONTADOR-1
END
IF @CONTADOR >= 1 GOTO LOOP
IF (@RESTO = 1)
BEGIN
SET @RETORNO = (@SOMA % 11)
END
ELSE
BEGIN
SET @DIGITO = 11 - (@SOMA % 11)
IF (@DIGITO > 9) SET @DIGITO = 0
SET @RETORNO = @DIGITO
END
RETURN @RETORNO
END
GO
/* Exemplo:
Calculando o Digito verificador do Banco do Brasil
*/
SELECT dbo.Modulo11('98710223423')
Nenhum comentário:
Postar um comentário