Hola!!
Mi idea es conseguir a partir de un cursor los valores para poder abrir
otros cursores que necesitan esas variables. Mi idea es la siguiente pero
esta mal:
use GIP
go
if exists(select name,type from sysobjects where name='cargarTabla'and
type='p')
drop procedure cargarTabla
go
create procedure cargarTabla
as
declare @sArea varchar
declare @dAño datetime
declare @sConcepto varchar
declare @sDetalle varchar
declare @sProyecto varchar
declare @sCentro varchar
declare @sGI varchar
declare @iUnidades int
declare @iPrecio int
declare @iArea int
declare @iConcepto varchar
declare @iDetalle varchar
declare @iProyecto varchar
declare @iCentro varchar
declare cDatos cursor for select
año,areagi,conceptogi,detallegi,proyecto,gi,centrocoste,unidades,precio from
datos
declare cArea cursor for select codigoareagi from areagi where
descripcionareagi=@sArea
declare cConcepto cursor for select codigoconceptogi from conceptogi where
descripcionconceptogi=@sConcepto
declare cDetalle cursor for select codigodetallegi from detallegi where
descripciondetallegi=@sDetalle
declare cProyecto cursor for select codigoproyecto from proyectos where
descripcionproyecto=@sProyecto
declare cCentro cursor for select codigocentrocoste from [Centros de Coste]
where descripcioncentrocoste=@sCentro
open cDatos
fetch next from cDatos into
@dAño,@sArea,@sConcepto,@sDetalle,@sProyecto,@sGI,@sCentro,@iUnidades,@iPrec
io
SET @dAño=@dAño
SET @sArea=@sArea
SET @sConcepto=@sConcepto
SET @sDetalle=@sDetalle
SET @sProyecto=@sProyecto
SET @sGI=@sGI
SET @sCentro=@sCentro
SET @iUnidades=@iUnidades
SET @iPrecio=@iPrecio
/*print(@dAño)*/
while @@FETCH_STATUS=0
BEGIN
print(@dAño)
open cArea
fetch next from cArea into @iArea
SET @iArea=@iArea
close cArea
deallocate cArea
open cConcepto
fetch next from cConcepto into @iConcepto
SET @iConcepto=@iConcepto
close cConcepto
deallocate cConcepto
open cDetalle
fetch next from cDetalle into @iDetalle
SET @iDetalle=@iDetalle
close cDetalle
deallocate cDetalle
/*open cProyecto
fetch next from cProyecto into @iProyecto
close cProyecto
deallocate cProyecto
open cCentro
fetch next from cCentro into @iCentro
close cCentro
deallocate cCentro*/
/*quedamos que eran genéricos*/
if (@sGI='Gasto')
insert into presupuestos
values(@dAño,@iArea,@iConcepto,@iDetalle,9999,9999,1,@iUnidades,@iPrecio)
else
insert into presupuestos
values(@dAño,@iArea,@iConcepto,@iDetalle,9999,9999,0,@iUnidades,@iPrecio)
fetch next from cDatos into
@dAño,@sArea,@sConcepto,@sDetalle,@sProyecto,@sGI,@sCentro,@iUnidades,@iPrec
io
END
print(@iArea)
close cDatos
deallocate cDatos
Quiero saber si se puede y como solucionar el problema
Gracias.Salu2.
Leer las respuestas