Manual Spring 2.x
Manual Acegi Security 1.x
Manual de Subproyectos
Integración con otros proyectos
Recetario
+tomcat 5.5.23 +Spring +Oracle "java.sql.SQLException: ORA-01722: número no válido"
Buenas tardes a todos.
Tengo Una aplicación web desarrollada con MyFaces, Spring, Oracle 10g, Tomcat 5.5.23.
Tengo los siguientes servidores:
- Oracle 10g, en Linux RedHat ES 4.
- Tomcat 5.5.23, en Windows 2003 server. (tomcat8090)
- Otro Tomcat 5.5.23, en Linux RedHat ES 4 (tomcat8091).
El problema:
En la Base de datos de oracle se manejan Pakages con la logica del negocio del sistema.
Cuando se establece una conexión desde el tomcat8091 a la Base de datos, se realiza el llamado a un pakage, todo funciona perfecto.
Cuando se establece una conexión desde el tomcat8090 a la Base de datos, se realiza el llamado a un pakage, pero genera el siguiente error:
2026-01-09 10:16:41,687 DEBUG FacturaDAOJdbcImpl:717 - ingresó a generarFactura
2026-01-09 10:16:41,765 DEBUG StoredProcedureGlobal:58 - sqlParameter[0] = un_ano - 4 - 2007
2026-01-09 10:16:41,765 DEBUG StoredProcedureGlobal:58 - sqlParameter[1] = un_mes - 4 - 12
2026-01-09 10:16:41,765 DEBUG StoredProcedureGlobal:58 - sqlParameter[2] = un_ciclo - 4 - 32
2026-01-09 10:16:41,765 DEBUG StoredProcedureGlobal:58 - sqlParameter[3] = un_secuencia_inicial - 4 - 59518
2026-01-09 10:16:41,765 DEBUG StoredProcedureGlobal:58 - sqlParameter[4] = un_secuencia_final - 4 - 59518
2026-01-09 10:16:41,781 DEBUG StoredProcedureGlobal:58 - sqlParameter[5] = un_entrega - 12 - I
2026-01-09 10:16:41,781 DEBUG StoredProcedureGlobal:156 - Compiled stored procedure. Call string is [{call pk_reporte_factura.generar_factura(?, ?, ?, ?, ?, ?)}]
2026-01-09 10:16:41,781 DEBUG StoredProcedureGlobal:310 - RdbmsOperation with SQL [pk_reporte_factura.generar_factura] compiled
2026-01-09 10:16:44,015 INFO XmlBeanDefinitionReader:163 - Loading XML bean definitions from class path resource [org/springframework/jdbc/support/sql-error-codes.xml]
2026-01-09 10:16:44,062 INFO XmlBeanDefinitionReader:163 - Loading XML bean definitions from class path resource [sql-error-codes.xml]
2026-01-09 10:16:44,078 INFO DefaultListableBeanFactory:332 - Overriding bean definition for bean 'Oracle': replacing [Root bean: class [org.springframework.jdbc.support.SQLErrorCodes]; abstract=false; singleton=true; lazyInit=false; autowire=0; dependencyCheck=0; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null; defined in class path resource [org/springframework/jdbc/support/sql-error-codes.xml]] with [Root bean: class [org.springframework.jdbc.support.SQLErrorCodes]; abstract=false; singleton=true; lazyInit=false; autowire=0; dependencyCheck=0; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null; defined in class path resource [sql-error-codes.xml]]
2026-01-09 10:16:44,078 INFO SQLErrorCodesFactory:115 - Found custom sql-error-codes.xml file at the root of the classpath
2026-01-09 10:16:44,171 INFO SQLErrorCodesFactory:121 - SQLErrorCodes loaded: [DB2, HSQL, MS-SQL, MySQL, Oracle, Informix, PostgreSQL, Sybase]
2026-01-09 10:16:44,234 ERROR FacturacionServiceImpl:330 - Ocurrió un error ejecutando el procedimiento Generar facturas
org.springframework.dao.DataIntegrityViolationException: CallableStatementCallback; SQL [{call pk_reporte_factura.generar_factura(?, ?, ?, ?, ?, ?)}]; ORA-01722: número no válido
ORA-06512: en "SIEC.PK_REPORTE_FACTURA_ENERCA", línea 720
ORA-06512: en "SIEC.PK_REPORTE_FACTURA", línea 353
ORA-06512: en línea 1
; nested exception is java.sql.SQLException: ORA-01722: número no válido
ORA-06512: en "SIEC.PK_REPORTE_FACTURA_ENERCA", línea 720
ORA-06512: en "SIEC.PK_REPORTE_FACTURA", línea 353
ORA-06512: en línea 1
org.springframework.dao.DataIntegrityViolationException: CallableStatementCallback; SQL [{call pk_reporte_factura.generar_factura(?, ?, ?, ?, ?, ?)}]; ORA-01722: número no válido
ORA-06512: en "SIEC.PK_REPORTE_FACTURA_ENERCA", línea 720
ORA-06512: en "SIEC.PK_REPORTE_FACTURA", línea 353
ORA-06512: en línea 1
; nested exception is java.sql.SQLException: ORA-01722: número no válido
ORA-06512: en "SIEC.PK_REPORTE_FACTURA_ENERCA", línea 720
ORA-06512: en "SIEC.PK_REPORTE_FACTURA", línea 353
ORA-06512: en línea 1
java.sql.SQLException: ORA-01722: número no válido
ORA-06512: en "SIEC.PK_REPORTE_FACTURA_ENERCA", línea 720
ORA-06512: en "SIEC.PK_REPORTE_FACTURA", línea 353
ORA-06512: en línea 1
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:743)
at oracle.jdbc.driver.T4CCallableStatement.doOall8(T4CCallableStatement.java:215)
at oracle.jdbc.driver.T4CCallableStatement.executeForRows(T4CCallableStatement.java:954)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1168)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3285)
at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3390)
at oracle.jdbc.driver.OracleCallableStatement.execute(OracleCallableStatement.java:4223)
at org.apache.commons.dbcp.DelegatingPreparedStatement.execute(DelegatingPreparedStatement.java:168)
at org.springframework.jdbc.core.JdbcTemplate$5.doInCallableStatement(JdbcTemplate.java:857)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:822)
at org.springframework.jdbc.core.JdbcTemplate.call(JdbcTemplate.java:855)
at org.springframework.jdbc.object.StoredProcedure.execute(StoredProcedure.java:112)
at co.com.ebsa.siec.model.util.StoredProcedureGlobal.execute(StoredProcedureGlobal.java:90)
at co.com.ebsa.siec.model.dao.jdbc.FacturaDAOJdbcImpl.generarFactura(FacturaDAOJdbcImpl.java:733)
at co.com.ebsa.siec.model.service.impl.FacturacionServiceImpl.generarFactura(FacturacionServiceImpl.java:314)
at co.com.ebsa.siec.view.solicitud.bean.ReporteFacturaBean.verReporteFacturaReliquidacion(ReporteFacturaBean.java:60)
at co.com.ebsa.siec.view.utilitarios.bean.ListarFacturaBean.imprimirFacturaAction(ListarFacturaBean.java:138)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.myfaces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:129)
at javax.faces.component.UICommand.broadcast(UICommand.java:86)
at javax.faces.component.UIViewRoot._broadcastForPhase(UIViewRoot.java:94)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:168)
at org.apache.myfaces.lifecycle.LifecycleImpl.invokeApplication(LifecycleImpl.java:343)
at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:86)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:137)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:144)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
at java.lang.Thread.run(Unknown Source)
2026-01-09 10:16:44,265 ERROR ReporteFacturaBean:118 - Ocurrió un error generando el reporte Factura. Ocurrió un error ejecutando el procedimiento Generar facturas
org.springframework.dao.DataIntegrityViolationException: CallableStatementCallback; SQL [{call pk_reporte_factura.generar_factura(?, ?, ?, ?, ?, ?)}]; ORA-01722: número no válido
ORA-06512: en "SIEC.PK_REPORTE_FACTURA_ENERCA", línea 720
ORA-06512: en "SIEC.PK_REPORTE_FACTURA", línea 353
ORA-06512: en línea 1
; nested exception is java.sql.SQLException: ORA-01722: número no válido
ORA-06512: en "SIEC.PK_REPORTE_FACTURA_ENERCA", línea 720
ORA-06512: en "SIEC.PK_REPORTE_FACTURA", línea 353
ORA-06512: en línea 1
co.com.ebsa.siec.model.exception.SIECException: Ocurrió un error ejecutando el procedimiento Generar facturas
org.springframework.dao.DataIntegrityViolationException: CallableStatementCallback; SQL [{call pk_reporte_factura.generar_factura(?, ?, ?, ?, ?, ?)}]; ORA-01722: número no válido
ORA-06512: en "SIEC.PK_REPORTE_FACTURA_ENERCA", línea 720
ORA-06512: en "SIEC.PK_REPORTE_FACTURA", línea 353
ORA-06512: en línea 1
; nested exception is java.sql.SQLException: ORA-01722: número no válido
ORA-06512: en "SIEC.PK_REPORTE_FACTURA_ENERCA", línea 720
ORA-06512: en "SIEC.PK_REPORTE_FACTURA", línea 353
ORA-06512: en línea 1
at co.com.ebsa.siec.model.service.impl.FacturacionServiceImpl.generarFactura(FacturacionServiceImpl.java:331)
at co.com.ebsa.siec.view.solicitud.bean.ReporteFacturaBean.verReporteFacturaReliquidacion(ReporteFacturaBean.java:60)
at co.com.ebsa.siec.view.utilitarios.bean.ListarFacturaBean.imprimirFacturaAction(ListarFacturaBean.java:138)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.myfaces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:129)
at javax.faces.component.UICommand.broadcast(UICommand.java:86)
at javax.faces.component.UIViewRoot._broadcastForPhase(UIViewRoot.java:94)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:168)
at org.apache.myfaces.lifecycle.LifecycleImpl.invokeApplication(LifecycleImpl.java:343)
at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:86)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:137)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:144)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
at java.lang.Thread.run(Unknown Source)
Caused by: org.springframework.dao.DataIntegrityViolationException: CallableStatementCallback; SQL [{call pk_reporte_factura.generar_factura(?, ?, ?, ?, ?, ?)}]; ORA-01722: número no válido
ORA-06512: en "SIEC.PK_REPORTE_FACTURA_ENERCA", línea 720
ORA-06512: en "SIEC.PK_REPORTE_FACTURA", línea 353
ORA-06512: en línea 1
; nested exception is java.sql.SQLException: ORA-01722: número no válido
ORA-06512: en "SIEC.PK_REPORTE_FACTURA_ENERCA", línea 720
ORA-06512: en "SIEC.PK_REPORTE_FACTURA", línea 353
ORA-06512: en línea 1
at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.translate(SQLErrorCodeSQLExceptionTranslator.java:236)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:839)
at org.springframework.jdbc.core.JdbcTemplate.call(JdbcTemplate.java:855)
at org.springframework.jdbc.object.StoredProcedure.execute(StoredProcedure.java:112)
at co.com.ebsa.siec.model.util.StoredProcedureGlobal.execute(StoredProcedureGlobal.java:90)
at co.com.ebsa.siec.model.dao.jdbc.FacturaDAOJdbcImpl.generarFactura(FacturaDAOJdbcImpl.java:733)
at co.com.ebsa.siec.model.service.impl.FacturacionServiceImpl.generarFactura(FacturacionServiceImpl.java:314)
... 31 more
Caused by: java.sql.SQLException: ORA-01722: número no válido
ORA-06512: en "SIEC.PK_REPORTE_FACTURA_ENERCA", línea 720
ORA-06512: en "SIEC.PK_REPORTE_FACTURA", línea 353
ORA-06512: en línea 1
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:743)
at oracle.jdbc.driver.T4CCallableStatement.doOall8(T4CCallableStatement.java:215)
at oracle.jdbc.driver.T4CCallableStatement.executeForRows(T4CCallableStatement.java:954)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1168)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3285)
at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3390)
at oracle.jdbc.driver.OracleCallableStatement.execute(OracleCallableStatement.java:4223)
at org.apache.commons.dbcp.DelegatingPreparedStatement.execute(DelegatingPreparedStatement.java:168)
at org.springframework.jdbc.core.JdbcTemplate$5.doInCallableStatement(JdbcTemplate.java:857)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:822)
... 36 more
2026-01-09 10:16:44,281 INFO ListarFacturaBean:145 - Saliendo de imprimirFacturaAction
Alguien me puede dar una orientación al respecto?.
Les agradezco de antemano cualquier ayuda.
- Inicie sesión o regístrese para enviar comentarios
- 602 lecturas
Comentarios
Hola,
Tu problema es mas de Jdbc que de Spring, se debe a la conversion de tipos de dato java a jdbc, revisa si estan haciendo bien la conversion.
Lo curioso es que el error es en una linea dentro del package de la BD y en esa liena lo que se hace es un select normal:
SELECT TO_NUMBER (valor)
INTO mi_costo_racionamiento1
FROM parametro_periodo
WHERE ano = 2007 AND mes = 12 AND parametro = 'COSTO_CI';
Y es el mismo codigo tanto para las conexiones desde el tomcat de linux y windows.
Como hago para verificar las conversiones en el jdbc?
puedes intentar ejecutar tu package desde alguna herramienta de administracion, como dbvisualizer o squirrel, o sqldeveloper.
Saludos
Hola domix.
El package funciona perfecto desde sqlplus, toad.
En le momento que se crea una conexion desde el tomcat hacia la bd, de alguna forma en esa conexión se envia que los decimales son , y no .? si eso es asi, como puedo cambiar eso?.
Pues puede ser en el script de arranque de Tomcat que establezcas el locale que usara la JVM, algo como:
java -Duser.country=ES -Duser.language=es -Duser.variant=Traditional_WIN
Hola domix.
Quiero darle las gracias por su colaboración, con esa instrucción de los parametros de java pude solucionar mi problema.
Muchas gracias.