este es mi codigo:
Código:
y los errores que me dan son: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
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'.