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 ?