oracle fetch报错,Oralce fetch first ORA-00933 SQL命令未正确结束

项目使用的是MyBatis,之前用的是DB2的数据库,现切换到Oracle时,其中一条SQL语句报错ORA-00933:

select *

from com_transaction

where 1=1

and user_id = ?

order by id desc

fetch first 10 rows only

错误:

Caused by: org.springframework.jdbc.BadSqlGrammarException:

Error querying database. Cause: java.sql.SQLException: ORA-00933: SQL 命令未正确结束

The error may exist in conf-mybatis/biz/ComTransactionDao.xml

The error may involve com.hisun.branch.dao.ComTransactionMapper.getComTransactionByParams-Inline

The error occurred while setting parameters

SQL: select * from com_transaction where 1=1 and user_id = ? order by id desc fetch first 10 rows only;

Cause: java.sql.SQLException: ORA-00933: SQL 命令未正确结束

; bad SQL grammar []; nested exception is java.sql.SQLException: ORA-00933: SQL 命令未正确结束

在想会不会是Oracle不支持fetch first rows only关键字?

fetch first 10 rows only,这个是取前十条的记录吧,在oracle 12c中可以这样写,12c之前的版本要结合ronum进行判断,示例代码:

select *

from (

select t.*, rownum as rn

from com_transaction t

where 1=1

and user_id = ?

order by id desc

)

where rn <= 10

感谢@刑爱明 的答案,另外补充一下,在MyBatis中,“小于等于”符号必须要用CDATA包含起来

<![CDATA[

where rn <= 10

]]>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值