mysql缺失右括号_mybatis分页查询时ORA-00907: 缺失右括号

在使用MyBatis进行分页查询时遇到了Oracle数据库报错:ORA-00907: 缺失右括号。问题出在SQL查询语句上。通过检查发现,SQL中使用了ROWNUM < (#{startRecord}+#{total})来实现分页,但Oracle需要的是ROWNUM BETWEEN start AND end。修复此错误后,分页查询正常运行。
摘要由CSDN通过智能技术生成

SELECT  *  FROM

(SELECT

id as id,

appserialnumber as appserialnumber,

who as who,

createtime as createtime,

operatedtype as operatedtype,

operate as operate,

operatedobject as operatedobject,

description as description,

result as result,

ROWNUM AS row_num

FROM server_log ROWNUM < (#{startRecord}+#{total})) t_temp

WHERE t_temp.row_num >= #{startRecord}

然后控制台打印语句:

10:06:51,114 DEBUG Connection:27 – ooo Connection Opened

10:06:51,442 DEBUG PreparedStatement:27 – ==>  Executing: select count(*) from server_log

10:06:51,442 DEBUG PreparedStatement:27 – ==>  Executing: select count(*) from server_log

10:06:51,442 DEBUG PreparedStatement:27 – ==> Parameters:

10:06:51,442 DEBUG PreparedStatement:27 – ==> Parameters:

10:06:51,630 DEBUG Connection:27 – ooo Connection Opened

10:06:51,646 DEBUG PreparedStatement:27 – ==>  Executing: SELECT * FROM (SELECT id as id, appserialnumber as appserialnumber, who as who, createtime as createtime, operatedtype as operatedtype, operate as operate, operatedobject as operatedobject, description as description, result as result, ROWNUM AS row_num FROM server_log ROWNUM = ?

10:06:51,646 DEBUG PreparedStatement:27 – ==>  Executing: SELECT * FROM (SELECT id as id, appserialnumber as appserialnumber, who as who, createtime as createtime, operatedtype as operatedtype, operate as operate, operatedobject as operatedobject, description as description, result as result, ROWNUM AS row_num FROM server_log ROWNUM = ?

10:06:51,646 DEBUG PreparedStatement:27 – ==> Parameters: 0(Integer), 10(Integer), 0(Integer)

10:06:51,646 DEBUG PreparedStatement:27 – ==> Parameters: 0(Integer), 10(Integer), 0(Integer)

2014-8-1 10:06:51 org.apache.catalina.core.StandardWrapperValve invoke

严重: Servlet.service() for servlet SearchServlet threw exception

org.apache.ibatis.exceptions.PersistenceException:

### Error querying database.  Cause: java.sql.SQLException: ORA-00907: 缺失右括号

### The error may involve com.itrus.mylog.domain.ServerLog.selectAllServerLog-Inline

### The error occurred while setting parameters

### Cause: java.sql.SQLException: ORA-00907: 缺失右括号

at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:8)

at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:77)

at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:69)

at com.itrus.mylog.dao.impl.SearchDAOImpl.searchPagination(SearchDAOImpl.java:37)

at com.itrus.mylog.service.impl.SearchServiceImpl.searchPagination(SearchServiceImpl.java:24)

at com.itrus.mylog.servlet.SearchServlet.search(SearchServlet.java:53)

at com.itrus.mylog.servlet.SearchServlet.service(SearchServlet.java:40)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)

at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)

at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)

at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)

at java.lang.Thread.run(Thread.java:619)

Caused by: java.sql.SQLException: ORA-00907: 缺失右括号

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.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:213)

at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:796)

at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1031)

at oracle.jdbc.driver.T4CPreparedStatement.executeMaybeDescribe(T4CPreparedStatement.java:836)

at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1116)

at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3285)

at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3390)

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.apache.ibatis.logging.jdbc.PreparedStatementLogger.invoke(PreparedStatementLogger.java:45)

at $Proxy1.execute(Unknown Source)

at org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:39)

at org.apache.ibatis.executor.statement.RoutingStatementHandler.query(RoutingStatementHandler.java:55)

at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:41)

at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:216)

at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:95)

at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:72)

at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:75)

… 18 more

求指点,是语句哪里写错了么?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值