Run stored procedure from iReport

0

I have an error running a stored procedure from iReport :

  

Error filling print ... Error executing SQL statement for: reportIngresoCuenta   net.sf.jasperreports.engine.JRException: Error executing SQL statement for: reportInGenecount   at com.jaspersoft.jrx.query.PlSqlQueryExecuter.createDatasource (PlSqlQueryExecuter.java:143)   at net.sf.jasperreports.engine.fill.JRFillDataset.createQueryDatasource (JRFillDataset.java:1114)   at net.sf.jasperreports.engine.fill.JRFillDataset.initDatasource (JRFillDataset.java:691)   at net.sf.jasperreports.engine.fill.JRBaseFiller.setParameters (JRBaseFiller.java:1314)   at net.sf.jasperreports.engine.fill.JRBaseFiller.fill (JRBaseFiller.java:931)   at net.sf.jasperreports.engine.fill.JRBaseFiller.fill (JRBaseFiller.java:873)   at net.sf.jasperreports.engine.fill.JRFiller.fill (JRFiller.java:87)   at net.sf.jasperreports.engine.JasperFillManager.fill (JasperFillManager.java:287)   at net.sf.jasperreports.engine.JasperFillManager.fillReport (JasperFillManager.java:760)   at com.jaspersoft.ireport.designer.compiler.IReportCompiler.run (IReportCompiler.java:891)   at org.openide.util.RequestProcessor $ Task.run (RequestProcessor.java:572)   at org.openide.util.RequestProcessor $ Processor.run (RequestProcessor.java:997)   Caused by: java.sql.SQLException: ORA-06502: PL / SQL: error: character string buffer too small numeric or value   ORA-06512: in "SERP.PKGTSRREPORTS", line 147 ORA-06512: online 1   at oracle.jdbc.driver.T4CTTIoer.processError (T4CTTIoer.java:447) at oracle.jdbc.driver.T4CTTIoer.processError (T4CTTIoer.java:396) at oracle.jdbc.driver.T4C8Oall.processError (T4C8Oall.java:951 ) At oracle.jdbc.driver.T4CTTIfun.receive (T4CTTIfun.java:513) at oracle.jdbc.driver.T4CTTIfun.doRPC (T4CTTIfun.java:227) at oracle.jdbc.driver.T4C8Oall.doOALL (T4C8Oall.java: 531) at oracle.jdbc.driver.T4CCallableStatement.doOall8 (T4CCallableStatement.java:205)   at oracle.jdbc.driver.T4CCallableStatement.executeForRows (T4CCallableStatement.java:1043)   at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout (OracleStatement.java:1336)   at oracle.jdbc.driver.OraclePreparedStatement.executeInternal (OraclePreparedStatement.java:3613)   at oracle.jdbc.driver.OraclePreparedStatement.execute (OraclePreparedStatement.java:3714)   at oracle.jdbc.driver.OracleCallableStatement.execute (OracleCallableStatement.java:4755)   at oracle.jdbc.driver.OraclePreparedStatementWrapper.execute (OraclePreparedStatementWrapper.java:1378)   at com.jaspersoft.jrx.query.PlSqlQueryExecuter.createDatasource (PlSqlQueryExecuter.java:128)   ... 11 more

The execution, I'm doing it like this:

{call PkgTsrReportes.proRepIngresoCtas($P{P_COD_CAMARA}, $P{P_FECHA_INICIAL}, $P{P_FECHA_FINAL}, $P{P_COD_CUENTA}, $P{O_TOTAL_PUBLICO}, $P{O_TOTAL_PRIVADO}, $P{O_LBL_PRIVADA}, $P{O_TOTAL_PRIVADA}, $P{O_LBL_IMPREGISTRO}, $P{O_TOTAL_IMPREGISTRO}, $P{O_TOTAL_RECAUDO_DIA}, $P{O_TOTAL_RENOVACION_NACIONAL}, $P{O_TOTAL_REPORTE}, $P{ORACLE_REF_CURSOR})}

and this is my procedure:

Procedure proRepIngresoCtas(pnCodCamara In Number,pvFechaIni In Varchar2,pvFechaFin In Varchar2,pvCodCuenta In Varchar2,pnTotalPublico Out Number,
                            pnTotalPrivado Out Number,pvLblPrivada Out Varchar2,pnTotalValRealPriv Out Number,pvLblImptoReg Out Varchar2,
                            pnTotalRepImpReg Out Number,pnTotalRecaudoDia Out Number,pnTotalRenovNal Out Number,pnTotalReporte Out Number,
                            pcQuery Out Sys_Refcursor
                           )
Is
  -- Cursor que retorna los datos
  Cursor cDatos
  Is
   Select a.tipo_cuenta Tipo_Cuenta,
       e.des_tabla Des_tipo_cuenta,
       a.cod_cuenta Cod_Cuenta,
       substr(a.descripcion,1,60) Descripcion_cuenta,
       Sum(c.valor_concepto) Valor,
       e.Cod_Tabla TipoCta,
       b.origen_transaccion OrigenTrans,
       Decode(b.origen_transaccion,Null,'TRANSACCIONES DE CAJAS',
              To_Number(Pkg_Rp_Generica.fvGetValorDesCodTabla(b.Cod_Camara,'TIPOTRANSACCRUE',1)),'TRANSACCIONES DEL RUE EN OPERACIONES DE CUENTAS POR PAGAR'
             ) Origen
   From Rp_Cuentas_Contables a,
      RpEncabezadoRecibosDiarioTp b,
      RpDetalleRecibosDiarioTp c,
      Rp_Conceptos d,
      Rp_Generica  e
   Where a.cod_camara                   = b.cod_camara
      And b.cod_camara                  = pnCodCamara
      And trunc(b.fecha_recibo)  Between To_Date(pvFechaIni,'DD-MM-YYYY') And To_Date(pvFechaFin,'DD-MM-YYYY')
      And rtrim(ltrim(a.cod_cuenta))    = decode(pvCodCuenta,'0',rtrim(ltrim(a.cod_cuenta)),pvCodCuenta)
      And b.cod_camara                  = c.cod_camara
      And b.num_recibo                  = c.num_recibo
      And b.cod_tipo_operacion          = 'R'
      And b.cod_tipo_operacion          = c.cod_tipo_operacion
      And c.cod_concepto                = d.cod_concepto
      And d.cod_concepto                != 3030
      And rtrim(ltrim(d.COD_CUENTA_CR)) = rtrim(ltrim(a.cod_cuenta))
      And nvl(b.num_recibo_def,0)       > 0
      And b.Estado_Rec                  = 'A'
      And c.valor_concepto              != 0
      And a.cod_camara                  = d.cod_camara
      And D.IND_PUBLICO_PRIVADO         = e.cod_tabla
      And D.COD_CONCEPTO                != 3030
      And e.nom_tabla                   = 'TIPINGRESO'
      And e.cod_camara                  = a.cod_camara
      And c.Cod_Tarifa != Pkg_Rp_Generica.fvGetValorDesCodTabla(a.cod_camara,'PRMRENOVNACNAL','5')
   Group By a.tipo_cuenta,
      e.des_tabla,
      a.cod_cuenta,
      a.descripcion,
      e.Cod_Tabla,
      b.origen_transaccion,
      Decode(b.origen_transaccion,Null,'TRANSACCIONES DE CAJAS',
             To_Number(Pkg_Rp_Generica.fvGetValorDesCodTabla(b.Cod_Camara,'TIPOTRANSACCRUE',1)),'TRANSACCIONES DEL RUE EN OPERACIONES DE CUENTAS POR PAGAR'
            )
   Order By 8,e.des_tabla,
      a.cod_cuenta;
  -- Cursor que retorna el total por recaudo renovacion nacional
  Cursor cTotalRenovNal
  Is
   Select Nvl(Sum(Valor_Concepto),0) Total
   From   RpDetalleRecibosDiarioTp
   Where  Cod_Camara          = pnCodCamara
      And Cod_Tipo_Operacion  = 'R'
      And Estado_Rec          = 'A'
      And Cod_Tarifa          = Pkg_Rp_Generica.fvGetValorDesCodTabla(Cod_Camara,'PRMRENOVNACNAL','5')
      And Trunc(Fecha_Creacion) Between To_Date(pvFechaIni,'DD-MM-YYYY') And To_Date(pvFechaFin,'DD-MM-YYYY');

  vvNombCamara       Varchar2(100);
  vvTitulo           Varchar2(100);
  vvTipoDoc          Varchar2(50);
  vvNomReport        Varchar2(100);
  vnTotalPublico     Number;
  vnTotalPrivado     Number;
  vnValor            Number;
  vnTotalRepImpReg   Number;
  vnTotalValRealPriv Number;
  vntotalRecaudoDia  Number;
  vnTotalRenovNal    Number;
  vnTotalReporte     Number;
Begin
  -- Se inicializan las tablas temporales
  proInicializaTablas(pnCodCamara,pvFechaIni,pvFechaFin);
  -- Se borra la tabla temporal
  Delete RpReportes;
  vnTotalPublico := 0;
  vnTotalPrivado := 0;
  vnTotalValRealPriv := 0;
  vnTotalRenovNal := 0;
  vnTotalReporte := 0;
  pvLblPrivada := 'Privada ' || Pkg_Rp_Generica.fvGetValorDesCodTabla(pnCodCamara,'LABELREPORTSIRP',1);
  pvLblImptoReg := 'Imp. Registro ' || Pkg_Rp_Generica.fvGetValorDesCodTabla(pnCodCamara,'LABELREPORTSIRP',2);
  -- Se inicializan los campos
  vvNombCamara := 'CAMARA DE COMERCIO DE CALI';
  vvTitulo := 'Reporte Ingreso de Caja';
  vvTipoDoc := 'F-TE-0003';
  vvNomReport := 'Rp_Reporte_Ingreso_CuentasD Versión [1.1.01.10]';
  -- Se recorre el cursor
  For Reg In cDatos Loop
    If Reg.TipoCta In('PU','BP') Then
      -- Se calcula el total publico
      vnTotalPublico := vnTotalPublico + Reg.Valor;
    End If;
    If Reg.TipoCta In('PR','BR') Then
      -- Se calcula el total privado
      vnTotalPrivado := vnTotalPrivado + Reg.Valor; 
    End If; 
    -- Se consulta si la cuenta es de impuesto de registro
    vnValor := Pkg_Rp_Generica.funExisRegiGene(pnCodCamara,'CTASIMPTOREGIST',Reg.Cod_Cuenta,1);
    If Reg.OrigenTrans Is Null Then
      If vnValor > 0 Then
        -- Se calcula el total impto registro
        vnTotalRepImpReg := vnTotalRepImpReg + Reg.Valor;
      End If;                                                 
    End If;
    -- Se inserta el registro en la tabla temporal
    proInsRpReportes
    (1,Reg.Tipo_Cuenta,Reg.Des_tipo_cuenta,Reg.Cod_Cuenta,Reg.Descripcion_Cuenta,Reg.Valor,Reg.TipoCta,
     Reg.OrigenTrans,Reg.Origen,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null,Null
    );  
  End Loop;
  -- Se calcula el total real privado
  vnTotalValRealPriv := vnTotalPrivado - vnTotalRepImpReg;
  -- Se calcula el total recaudo dia
  vntotalRecaudoDia := Nvl(vnTotalPublico + vnTotalPrivado,0);
  -- Se trae el total renovacion nacional
  Open  cTotalRenovNal;
  Fetch cTotalRenovNal Into vnTotalRenovNal;
  Close cTotalRenovNal;
  -- Se calcula el total reporte
  vnTotalReporte := vntotalRecaudoDia + vnTotalRenovNal;
  -- Se asignan los parametros de salida
  pnTotalPublico := vnTotalPublico;
  pnTotalPrivado := vnTotalPrivado;
  pnTotalValRealPriv := vnTotalValRealPriv;
  pnTotalRepImpReg := vnTotalRepImpReg;
  pnTotalRecaudoDia := vntotalRecaudoDia;
  pnTotalRenovNal := vnTotalRenovNal;
  pnTotalReporte := vnTotalReporte;
  -- Se retorna el cursor
  Open pcQuery For
    Select Campo1 Tipo_Cuenta,
       Campo2 Des_tipo_cuenta,
       Campo3 Cod_Cuenta,
       Campo4 Descripcion_Cuenta,
       Campo5 Valor,
       Campo6 TipoCta,
       Campo7 OrigenTrans,
       Campo8 Origen
    From   RpReportes;

End proRepIngresoCtas;

How can I run an storage procedure from Oracle in iReport ?

    
asked by Leonardo Zapata 24.12.2018 в 17:08
source

0 answers