Array
(
)

Problemas com conversão de dados

Fpinho
   - 05 jul 2006

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

Psergio.p
   - 25 jul 2006

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