当前位置: 代码迷 >> J2EE >> 急Java调用Oracle实施SQL:ORA-00911: 无效字符
  详细解决方案

急Java调用Oracle实施SQL:ORA-00911: 无效字符

热度:119   发布时间:2016-04-22 00:50:12.0
急:Java调用Oracle执行SQL:ORA-00911: 无效字符
开发语言:Java
数据库:Oracle 10g
问题:在Java代码中,有三个SQL需要执行,1个是INSERT,1个是UPDATE,另一个是DELETE,我使用分号(;)将三个SQL连接起来,然后将其执行
Java code
con.prepareStatement(allSQL.toString()).execute();

但会报如下错误:
Java code
java.sql.SQLException: ORA-00911: 无效字符    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)    at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289)    at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:573)    at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1891)    at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteFetch(TTC7Protocol.java:1093)    at oracle.jdbc.driver.OracleStatement.executeNonQuery(OracleStatement.java:2047)    at oracle.jdbc.driver.OracleStatement.doExecuteOther(OracleStatement.java:1940)    at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2709)    at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:589)    at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:656)    at org.apache.commons.dbcp.DelegatingPreparedStatement.execute(DelegatingPreparedStatement.java:168)    at com.ebest.pg.dao.VisitDao.addVisitMsg(VisitDao.java:452)    at com.ebest.pg.service.VisitMsgService.addVisitMsg_tran(VisitMsgService.java:222)    at com.ebest.pg.service.VisitMsgService.doService(VisitMsgService.java:25)    at com.ebest.pg.servlet.ServletApp.doService(ServletApp.java:161)    at com.ebest.pg.servlet.ServletApp.doPost(ServletApp.java:72)    at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)    at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)    at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)    at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)    at java.lang.Thread.run(Thread.java:595)



我保证每个SQL语句都能单独在SQL Plus中正常执行的。
  相关解决方案