Buscar

Função modulo 10, para sql server, muito usada para calculo de digitos verificadores

Código

Função Modulo 10, para SQL Server, muito usada para calculo de digitos verificadores
Muito usado em boletos bancários.

CREATE FUNCTION Modulo10(@numero varchar(15))
RETURNS CHAR(1)
AS
BEGIN
  declare
    @max      smallint,
    @contador smallint,
    @peso     varchar(24),
    @resto    smallint,
    @valor    smallint,
    @soma     int,
    @retorno  int
  select @peso = '121212121212121212121212'
  select @max  = datalength(@numero)
  select @peso = right(@peso, @max)
  set @contador = @max+1
  set @soma     = 0
  loop:
        set @contador = @contador-1
        set @valor    = isnull((ascii(substring(@peso, @contador, 1))-48) *
(ascii(substring(@numero, @contador, 1))-48), 0)
        set @soma     = isnull((select (case when (@valor<10) then
@valor when  (@valor>9) then @valor-10 end)), 0)+@soma
        set @soma     = isnull((select (case when  (@valor<10) then
null when  (@valor>9) then 1 end)), 0)+@soma
        if (@contador >1) goto loop
  select @resto= sum(@soma)%10
  select @retorno = case @resto when 0 then 0 else 10-@resto end
  return(Convert(char(1), @retorno))
END
GO

 

Publicidade

Vote na dica




Quantidade de votos: 0 votos
Aceitação: 0%


Detalhes da dica

Categoria: Banco de dados
Adicionada dia: 28/07/05
Por: Ricardo L. S.
Visualizada: 13245 vezes

Planeta Delphi - Tudo sobre programação Delphi Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009