您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> Oracle >> Oralce fetch first ORA-00933 SQL命令未正确结束

Oralce fetch first ORA-00933 SQL命令未正确结束

来源:网络整理     时间:2016/6/3 11:15:47     关键词:oralce,fetch

关于网友提出的“Oralce fetch first ORA-00933 SQL命令未正确结束”问题疑问,本网通过在网上对“Oralce fetch first ORA-00933 SQL命令未正确结束”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: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关键字?


解决方案1:

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

<![CDATA[ 
    where rn <= 10
]]>

解决方案2:

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


以上介绍了“Oralce fetch first ORA-00933 SQL命令未正确结束”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/1476616.html

相关图片

相关文章