Problemas com conversão de dados

05/07/2006

0

Galera, estou fazendo uma rotina para calculo do digito do CEI. O grande problema é que não conheço muito da linguagem de script do SQL. A lógica da rotina está correta e já a escrevi totalmente... Quando tento rodar esta dando um problema de conversão numa variável que está simulando um loop FOR...NEXT. Já tentei de tudo mas não consegui resolver, agradeço muito se alguem puder ajudar.

Grande abraço a todos

Segue a rotina

create function dbo.fcValidaCEI(@var_num VarChar(14) = NULL)
returns int
as
begin
declare @var_retorno int

-- Variaveis usadas no calculo
declare @strAux varchar(11),
@numSomat int,
@i int,
@strChar varchar,
@strCharAux varchar,
@numLenumSomat int,
@numAux int,
@numDigit int,
@strSomat int

-- Calcula o digito
set @strAux = ´74185216374´
set @numSomat = 0
set @i = 1

while (@i <= 11)
begin
set @strChar = substring(@var_num,@i,1)
set @strCharAux = substring(@strAux,@i,1)
set @numSomat = @numSomat + (@strChar * @strCharAux)
set @i = @i + 1
end

set @strSomat = @numSomat
set @numLenumSomat = len(@strSomat)
set @numAux = substring(@strSomat,(@numLenumSomat-1),1) + substring(@strSomat,(@numLenumSomat),1)

if (@numAux >= 11) and (@numAux <=18)
begin
set @numDigit = 20 - @numAux
end
else
begin
if (@numAux = 10)
begin
set @numDigit = 1
end
else
begin
set @numDigit = 10 - @numAux
end
end
if (@numDigit = 10)
begin
set @numDigit = 1
end

-- Condição para atender ao SFG. Aceitar o digito informado(0 ou 1), mesmo que o resultado do calculo seja igual a 1
if substring(@var_num,11,1) < ´2´
begin
if (@numDigit = 0) or (@numDigit = 1)
begin
set @numDigit = substring(@var_num,11,1)
set @var_retorno = 2
return(@var_retorno)
end
end

if substring(@var_num,11,1) <> @numDigit
begin
set @var_retorno = 0
return(@var_retorno)
end

set @var_retorno = 2
return(@var_retorno)
end


Fpinho

Fpinho

Responder

Posts

25/07/2006

Psergio.p

Caro amigo, coloca a msg de erro ai que eu te ajudo!


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar