Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/09/2011, 11:41
Avatar de yamiblancoc
yamiblancoc
 
Fecha de Ingreso: agosto-2011
Mensajes: 103
Antigüedad: 12 años, 8 meses
Puntos: 4
Sonrisa stored procedure

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'.