estoy creando un stored procedure y ya declare las variables pero de igual forma me sigue dando los errores
este es mi codigo:
Código:
DROP PROCEDURE dbo.presupuesto_prueba
GO
CREATE PROCEDURE presupuesto_prueba
@acc_cod int,
@cod_acesp int,
@arr_centro_proy_id int,
@id_item varchar (40),
@an_o_actual int
@i_fecha_ini datetime,
@i_fecha_fin datetime,
@i_item varchar(40),
@i_year int
AS declare
@iditem varchar(40),
@i_fecha_ini datetime
@iditem2 varchar(41),
@monto_prog_fec decimal(19, 4),
@monto_prog_anual decimal(19, 4) ,
@monto_ced decimal(19, 4) ,
@monto_rec decimal(19, 4) ,
@monto_ajust decimal(19, 4) ,
@neto_prec decimal(19, 4) ,
@ejec_prec decimal(19, 4) ,
@disp_prec decimal(19, 4) ,
@compromiso decimal(19, 4) ,
@causado decimal(19, 4) ,
@pagado decimal(19, 4) ,
@disponible decimal(19, 4)
TRUNCATE TABLE PRESUPUESTO
set @iditem2 = rtrim(@iitem) +'%'
INSERT PRESUPUESTO
SELECT
id_item,
nombre,
consolidada
FROM SIPREFII_Partidas
WHERE ID_ITEM LIKE @iditem2
AND ANNO_INI=2006
declare TEMP_DISPO_PRESU cursor for
select
id_item
from PRESUPUESTO
--for update
open DISPO_PRESU
fetch next from DISPO_PRESU
into @iditem
while @@fetch_status = 0
begin
set @iditem2 = rtrim(@iditem) +'%'
--update PRESUPUESTO
set @monto_prog_fec = (SELECT ISNULL(SUM(pacc_monto),0) as tpres
FROM SIPREFII_Proy_Acc_pres a,SIPREFII_PARTIDAS b
WHERE a.ID_ITEM LIKE @iditem2
AND a.pre_an_o=@i_year
AND a.ID_ITEM=b.ID_ITEM
AND b.CONSOLIDADA<>'1'
AND a.pacc_mes BETWEEN MONTH(@i_fecha_ini) AND MONTH(@i_fecha_fin))
+
(SELECT ISNULL(SUM(pac_monto),0) as tpres
FROM SIPREFII_AC_pres a,SIPREFII_PARTIDAS b
WHERE a.ID_ITEM LIKE @iditem2
AND a.ID_ITEM=b.ID_ITEM
AND b.CONSOLIDADA<>'1'
AND a.POA=@i_year
AND a.pac_mes BETWEEN MONTH(@i_fecha_ini) AND MONTH(@i_fecha_fin))
set @monto_prog_anual=(SELECT ISNULL(SUM(pac_monto),0) as tpres
FROM SIPREFII_AC_pres a,SIPREFII_PARTIDAS b
WHERE a.ID_ITEM LIKE @iditem2
AND a.ID_ITEM=b.ID_ITEM
AND b.CONSOLIDADA<>'1'
AND a.POA=@i_year
AND a.pac_mes BETWEEN 1 and 12)+
(SELECT ISNULL(SUM(pacc_monto),0) as tpres
FROM SIPREFII_Proy_Acc_pres a,SIPREFII_PARTIDAS b
WHERE a.ID_ITEM LIKE @iditem2
AND a.pre_an_o=@i_year
AND a.ID_ITEM=b.ID_ITEM
AND b.CONSOLIDADA<>'1'
AND a.pacc_mes BETWEEN 1 and 12) --,
set @monto_ced =(SELECT ISNULL(sum(b.monto),0) as suma
FROM SIPREFII_traspaso a,
SIPREFII_traspaso_dt b
WHERE a.pres_ano=b.pres_ano
AND a.pres_ano=@i_year
AND a.modi_cod=b.modi_cod
AND a.modi_fecha BETWEEN @i_fecha_ini AND i_fecha_fin
AND modi_activo=1
AND ced_rec_tipo='1'
AND id_item like @iditem2)
set @monto_rec =(SELECT ISNULL(sum(b.monto),0) as suma
FROM SIPREFII_traspaso a,
SIPREFII_traspaso_dt b
WHERE a.pres_ano=b.pres_ano
AND a.pres_ano=@i_year
AND a.modi_cod=b.modi_cod
AND a.modi_fecha BETWEEN @i_fecha_ini AND i_fecha_fin
AND modi_activo=1
AND ced_rec_tipo='0'
AND id_item like @iditem2)
set @neto_prec =(SELECT ISNULL(SUM(b.monto),0) as suma
FROM SIPREFII_Precompromiso a,SIPREFII_Precompromiso_dt b
WHERE a.pres_ano=b.pres_ano
AND a.pres_ano=@i_year
AND a.prec_cod=b.prec_cod
AND a.prec_fecha BETWEEN @i_fecha_ini AND i_fecha_fin
AND prec_activo=1
AND b.id_item LIKE @iditem2)
set @ejec_prec =(select isnull(sum(monto),0)
from SIPREFII_Causado_dt a,
SIPREFII_Causado b
where a.caus_cod = b.caus_cod
and a.pres_ano = b.pres_ano
and a.pres_ano = @i_year
and comp_cod in (select a.comp_cod
from SIPREFII_Compromiso a,
SIPREFII_Compromiso_dt b
where a.comp_cod = b.comp_cod
and a.pres_ano = b.pres_ano
and a.pres_ano = @i_year
and a.comp_activo = 1
and a.comp_cod in (select a.prec_cod
from SIPREFII_Precompromiso a,
SIPREFII_PreCompromiso_dt b
where a.prec_cod = b.prec_cod
and a.pres_ano = b.pres_ano
and a.prec_activo = 1
and a.pres_ano = @i_year))
AND b.caus_fecha BETWEEN @i_fecha_ini AND @i_fecha_fin
and caus_activo = 1
and a.id_item like @iditem2)
set @compromiso =(SELECT ISNULL(SUM(b.monto),0) as suma
FROM SIPREFII_Compromiso a,
SIPREFII_Compromiso_dt b
WHERE a.pres_ano=b.pres_ano
AND a.pres_ano=@i_year
AND a.comp_cod=b.comp_cod
AND a.comp_fecha BETWEEN @i_fecha_ini AND @i_fecha_fin
AND comp_activo=1
AND b.id_item LIKE @iditem2)
set @causado =(SELECT ISNULL(SUM(b.monto),0) as suma
FROM SIPREFII_Causado a,
SIPREFII_Causado_dt b
WHERE a.pres_ano=b.pres_ano
AND a.pres_ano=@i_year
AND a.caus_cod=b.caus_cod
AND a.caus_fecha BETWEEN @i_fecha_ini AND @i_fecha_fin
AND caus_activo=1 AND b.id_item LIKE @iditem2)
set @pagado =(SELECT ISNULL(SUM(b.monto),0) as suma
FROM SIPREFII_Pagado a,
SIPREFII_Pagado_dt b
WHERE a.pres_ano=b.pres_ano
AND a.pres_ano=2010
AND a.paga_cod=b.paga_cod
AND a.paga_fecha BETWEEN @i_fecha_ini AND @i_fecha_fin
AND paga_activo=1 AND b.id_item LIKE @iditem2)
--where current of DISPO_PRESU*/
select @iditem, @monto_prog_fec, @monto_prog_anual, @monto_ced,@monto_rec,@neto_prec,@ejec_prec,0,@compromiso,@causado,@pagado,0
fetch next from DISPO_PRESU
into @iditem
end
close DISPO_PRESU
deallocate DISPO_PRESU
/*update PRESUPUESTO
set monto_ajust = monto_prog_anual + monto_rec - monto_ced,
disp_prec = neto_prec - ejec_prec*/
select *
from PRESUPUESTO
GO
y los errores que me dan son:
Server: Msg 3701, Level 11, State 5, Line 1
No se puede drop procedimiento 'dbo.presupuesto_prueba' porque no existe en el catálogo del sistema.
Server: Msg 170, Level 15, State 1, Procedure presupuesto_prueba, Line 8
Línea 8: sintaxis incorrecta cerca de '@i_fecha_ini'.
Server: Msg 137, Level 15, State 1, Procedure presupuesto_prueba, Line 90
Debe declarar la variable '@i_year'.
Procedure presupuesto_prueba, Line 160
Debe declarar la variable '@i_fecha_ini'.
Server: Msg 137, Level 15, State 1, Procedure presupuesto_prueba, Line 165
Debe declarar la variable '@monto_prog_fec'.