ORA-01858 :在要求輸入數字處找到非數字字符

   java鏈接oracle數據庫的時候遇到了:ORA-01858 :在要求輸入數字處找到非數字字符    這個錯誤,後續自己解決了,把原因和解決辦法貼出來,大家看看


2017-04-27 08:52:37,284 ERROR [com.iss.amc.bat.fundNav.dao.FundNavDAO] [com.iss.amc.framework.core.dao.BaseDAO$4.doInConnection(BaseDAO.java:253)] - execute failed
java.sql.BatchUpdateException: ORA-01858: 在要求輸入數字處找到非數字字符

at oracle.jdbc.driver.DatabaseError.throwBatchUpdateException(DatabaseError.java:343)
at oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:10720)
at com.mchange.v2.sql.filter.FilterPreparedStatement.executeBatch(FilterPreparedStatement.java:260)
at com.iss.amc.framework.core.dao.BaseDAO$4.doInConnection(BaseDAO.java:243)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:289)
at com.iss.amc.framework.core.dao.BaseDAO.executeUpdateMutil(BaseDAO.java:224)
at com.iss.amc.bat.fundNav.dao.FundNavDAO.insertSynchLog(FundNavDAO.java:109)
at com.iss.amc.bat.fundNav.bo.impl.FundNavBOImpl.insertSynchLog(FundNavBOImpl.java:68)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:304)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
at org.springframework.aop.framework.adapter.ThrowsAdviceInterceptor.invoke(ThrowsAdviceInterceptor.java:126)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.adapter.AfterReturningAdviceInterceptor.invoke(AfterReturningAdviceInterceptor.java:50)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.adapter.MethodBeforeAdviceInterceptor.invoke(MethodBeforeAdviceInterceptor.java:50)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at com.sun.proxy.$Proxy2.insertSynchLog(Unknown Source)
at com.iss.amc.bat.scanQuartz.action.scanQuartzAction.scanHuaxiaFildor(scanQuartzAction.java:367)
at sun.reflect.GeneratedMethodAccessor38.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.util.MethodInvoker.invoke(MethodInvoker.java:283)
at org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:272)
at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:86)
at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:529)


下面是我出錯的代碼:


出錯原因是:preparedstatement在執行的時候不能把紅框內的串替換爲sql中的問號,主要是to_date函數替換不了,解決辦法是將to_date函數先放到sql語句中,然後替換後面的變量,就不報這個錯誤了。


修改後的代碼:







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章