You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ORA-00933错误:SQL在Oracle中正常但Java调用时报错

解决ORA-00933:SQL命令未正确结束的问题

嘿,我一眼就揪出你SQL语句里的问题了!这个ORA-00933错误是因为你的SQL存在两处语法小问题——Oracle客户端可能会对这些细节宽松处理,但JDBC驱动会严格解析每一个字符,具体问题如下:

  • 多余的逗号:在WHERE DOK_MIME_TYPE='application/pdf'后面你多写了个逗号,这完全没必要!Oracle的OFFSET...FETCH语法是直接跟在WHERE子句(如果有ORDER BY的话就跟在ORDER BY后面)之后的,不需要额外的逗号分隔。
  • 末尾的分号:JDBC执行SQL时,不需要在语句末尾加分号——这个分号是我们在SQL客户端里用来结束命令的标记,但放到JDBC的字符串里会被当成SQL的一部分,直接触发语法错误。

修正后的SQL语句应该是这样的:

select DOK_ID , ID, AKTEN_ID , TITEL , DOK_TYP , DOK_ART , ERSTELL_DAT , EING_DAT , DOK_MIME_TYPE 
from patgbmf.supi 
where DOK_MIME_TYPE='application/pdf' 
OFFSET 20 ROWS FETCH NEXT 20 ROWS ONLY

把你的Java代码里executeQuery的参数换成上面的语句,再运行就没问题了。另外给你提个小建议:最好给查询加上ORDER BY子句,不然OFFSET和FETCH的结果可能会不稳定——因为没有排序的话,Oracle返回的行顺序是不固定的,每次分页的结果可能会出现重复或者遗漏的情况。

比如可以改成更严谨的版本:

select DOK_ID , ID, AKTEN_ID , TITEL , DOK_TYP , DOK_ART , ERSTELL_DAT , EING_DAT , DOK_MIME_TYPE 
from patgbmf.supi 
where DOK_MIME_TYPE='application/pdf' 
ORDER BY DOK_ID
OFFSET 20 ROWS FETCH NEXT 20 ROWS ONLY

这样分页结果就稳定啦!

内容的提问来源于stack exchange,提问作者AlexanderB

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:24:06