Ver Mensaje Individual
  #1  
Antiguo 02-06-2006
pani_alex pani_alex is offline
Miembro
 
Registrado: oct 2005
Posts: 51
Reputación: 19
pani_alex Va por buen camino
problemas con insercion en procedure

tengo un pequeño problema con unos procedimientos, no me insertan los datos.
el procedimiento se encuentra anidado y consta de tres partes, siendo el ultimo el que efectua el insert.

proc 1
Código SQL [-]
CREATE PROCEDURE I_POSICION_COTIZACIONMONEDA (
    VE_IDSUCURSALAGENCIA INTEGER)
AS
declare variable v_idCotizacionMoneda integer;
declare variable v_Fecha date;
BEGIN
  /* 1 select de cotizaciones monedas */
  v_Fecha=extractdate(cast("NOW" AS DATE));
  
  for select id_cotizacionmoneda
  from cotizacionesmonedas
  where estado='A'
  and id_tipocotizacion=1
  into :v_idCotizacionMoneda
  do begin
    execute procedure i_posicion_tipoespecie :ve_idsucursalagencia,:v_idCotizacionMoneda,:v_fecha;
  end
/*  SUSPEND;*/
END

proc 2
Código SQL [-]
CREATE PROCEDURE I_POSICION_TIPOESPECIE (
    VE_IDSUCURSALAGENCIA INTEGER,
    VE_IDCOTIZACIONMONEDA INTEGER,
    VE_FECHA DATE)
AS
declare variable v_idTipoEspecie integer;
BEGIN
  /* 2 select de tiposEspecies */
  for select id_tipoespecie
  from tiposespecies
  where estado='A'
  into :v_idTipoEspecie
  do begin
    execute procedure i_posicion_caja :VE_IDSUCURSALAGENCIA,:v_idTipoEspecie,:VE_IDCOTIZACIONMONEDA,:ve_fecha;
  end
END

proc 3
Código SQL [-]
CREATE PROCEDURE I_POSICION_CAJA (
    VE_IDSUCURSALAGENCIA INTEGER,
    VE_IDTIPOESPECIE INTEGER,
    VE_IDCOTIZACIONMONEDA INTEGER,
    VE_FECHA DATE)
AS
declare variable v_idCaja integer;
declare variable v_EstadoPosicion varchar(1);
declare variable v_CodCaja varchar(4);
/*declare variable v_fecha varchar(10);*/
declare variable v_idPosicion integer;
BEGIN
  /* Procedure body */
  for select id_caja,codigo
  from cajas
  where estado='A'
  into :v_idCaja,:v_CodCaja
  do begin
    if(:v_CodCaja='9999')then
      v_EstadoPosicion='P';
    else
      v_EstadoPosicion='L';

/*    select *
    from sp_fechaactual
    into :v_fecha;*/
    v_idPosicion=0;
/*    select id_posicion
    from posiciones
    where posiciones.id_sucursalagencia=:VE_IDSUCURSALAGENCIA
    and posiciones.id_tipoespecie=:VE_IDTIPOESPECIE
    and posiciones.id_caja=:v_idCaja
    and posiciones.id_cotizacionmoneda=:VE_IDCOTIZACIONMONEDA
    and posiciones.fecha=:ve_fecha
    and posiciones.estadoposicion=:v_EstadoPosicion
    into :v_idPosicion;*/

    if((:v_idPosicion=0)or(:v_idPosicion is null))then
      insert into posiciones(id_posicion,id_sucursalagencia,
      id_tipoespecie,id_caja,id_cotizacionmoneda,estadoPosicion,estado,fecha,
      otrosimpuestos,iva,actoDocumento,gastoCobrado,resultadoAcumulado,resultadoDia,
      entradaFondo,salidaFondo,
      debitoPosicionME,debitoPosicionMN,
      creditoPosicionME,creditoPosicionMN,
      saldoPosicionME,saldoPosicionMN,
      saldoCajaME,saldoCajaMN,
      creditoCajaME,creditoCajaMN,
      debitoCajaME,debitoCajaMN)
      values(gen_id(id_posicion,1),:VE_IDSUCURSALAGENCIA,
      :VE_IDTIPOESPECIE,:v_idCaja,:VE_IDCOTIZACIONMONEDA,:v_EstadoPosicion,'A',:ve_fecha,
      0,0,0,0,0,0,
      0,0,
      0,0,
      0,0,
      0,0,
      0,0,
      0,0,
      0,0);
  end
END

en este ultimo se deberia efectuar la insercion dentro de la tabla especificada.

alguien puede corregirme o decirme como introdusco todo esto dentro de un solo procedimiento porque a mi me saltaba un error al tener varios for anidados dentro de un mismo procedimiento, pienso que este era su problema

gracias
Responder Con Cita