buenas este es el codigo

06/05/2004 - 19:24 por Jorge Luis Medrano | Informe spam
aquí les agrego el código a ver si me pueden ayudar




use comercio_ext

declare @clase_com as integer,
@anyo as int,
@mes as int,
@via as int,
@aduana as int,
@pais as int,
@pais_o as int,
@franquicia as int,
@sac as char(8),
@capitulo as char(2),
@partida as char(2),
@subpartida as char(2),
@inciso as char(2),
@valor as decimal (23,4),
@t_valor as int,
@peso as decimal (23,4),
@unidades as decimal (11,0),
@flete as decimal (23,4),
@seguro as decimal (23,4),
@otro as decimal (23,4)


declare @cont as integer
declare @pos as integer

declare cur_com cursor for
select * from datos_globales where anyo = 1999 order by sac

Open cur_com
select @cont = 0


fetch next from cur_com
into @clase_com, @anyo, @mes, @via, @aduana, @pais, @pais_o, @franquicia,
@sac, @valor, @t_valor, @peso, @unidades, @flete, @seguro, @otro

while @@fetch_status = 0
begin
select @pos = 1



while @pos <= len(@sac)
begin

if @pos = 1

select @capitulo = substring(@sac,@pos,2)
select @pos = @pos + 2


if @pos = 3

select @partida = substring(@sac,@pos,2)
select @pos = @pos + 2


if @pos = 5

select @subpartida = substring(@sac,@pos,2)
select @pos = @pos + 2

if @pos = 7

select @inciso = substring(@sac,@pos,2)


Insert into datosg(clase_com, anyo, mes, via, aduana, pais, pais_o,
franquicia, capitulo, partida, subpartida, inciso, valor, t_valor, peso,
unidades, flete, seguro, otro)
values (@clase_com, @anyo, @mes, @via, @aduana, @pais, @pais_o,
@franquicia, @capitulo, @partida, @subpartida, @inciso, @valor, @t_valor,
@peso, @unidades, @flete, @seguro, @otro)

select @cont = @cont + 1

fetch next from cur_com
into @clase_com, @anyo, @mes, @via, @aduana, @pais, @pais_o, @franquicia,
@sac, @valor, @t_valor, @peso, @unidades, @flete, @seguro, @otro

print @cont
end
end



close cur_com
deallocate cur_com
go
 

Leer las respuestas

#1 ulises
06/05/2004 - 21:48 | Informe spam
1) Me parece que todo ese código puede ser reemplazdo
perfectamente por :

use comercio_ext
declare @cont int
Insert into datosg(clase_com, anyo, mes, via, aduana,
pais, pais_o, franquicia,
capitulo, partida, subpartida, inciso,
valor, t_valor, peso, unidades, flete, seguro, otro)
select clase_com, anyo, mes, via, aduana, pais, pais_o,
franquicia,
substring(sac,1,2), substring(sac,3,2), substring
(sac,5,2), substring(sac,7,2),
valor, t_valor, peso, unidades, flete, seguro, otro
from datos_globales where anyo = 1999 order by sac
set @cont = @@rowcount
print @cont

2) Revisando tu código, veo malos anidamientos, en
realidad no le veo sentido al bucle de "@pos", creo que
eso es lo que ocasiona problemas en la contabilización del
la variable @cont.

Saludos,
Ulises

aquí les agrego el código a ver si me pueden ayudar




use comercio_ext

declare @clase_com as integer,
@anyo as int,
@mes as int,
@via as int,
@aduana as int,
@pais as int,
@pais_o as int,
@franquicia as int,
@sac as char(8),
@capitulo as char(2),
@partida as char(2),
@subpartida as char(2),
@inciso as char(2),
@valor as decimal (23,4),
@t_valor as int,
@peso as decimal (23,4),
@unidades as decimal (11,0),
@flete as decimal (23,4),
@seguro as decimal (23,4),
@otro as decimal (23,4)


declare @cont as integer
declare @pos as integer

declare cur_com cursor for
select * from datos_globales where anyo = 1999 order by


sac

Open cur_com
select @cont = 0


fetch next from cur_com
into @clase_com, @anyo, @mes, @via, @aduana, @pais,


@pais_o, @franquicia,
@sac, @valor, @t_valor, @peso, @unidades, @flete,


@seguro, @otro

while @@fetch_status = 0
begin
select @pos = 1



while @pos <= len(@sac)
begin

if @pos = 1

select @capitulo = substring(@sac,@pos,2)
select @pos = @pos + 2


if @pos = 3

select @partida = substring(@sac,@pos,2)
select @pos = @pos + 2


if @pos = 5

select @subpartida = substring(@sac,@pos,2)
select @pos = @pos + 2

if @pos = 7

select @inciso = substring(@sac,@pos,2)


Insert into datosg(clase_com, anyo, mes, via, aduana,


pais, pais_o,
franquicia, capitulo, partida, subpartida, inciso, valor,


t_valor, peso,
unidades, flete, seguro, otro)
values (@clase_com, @anyo, @mes, @via, @aduana, @pais,


@pais_o,
@franquicia, @capitulo, @partida, @subpartida, @inciso,


@valor, @t_valor,
@peso, @unidades, @flete, @seguro, @otro)

select @cont = @cont + 1

fetch next from cur_com
into @clase_com, @anyo, @mes, @via, @aduana, @pais,


@pais_o, @franquicia,
@sac, @valor, @t_valor, @peso, @unidades, @flete,


@seguro, @otro

print @cont
end
end



close cur_com
deallocate cur_com
go


.

Preguntas similares