逆袭 奋起的gravatar头像
逆袭 奋起 2018-09-04 20:55:45

oracle查询sql报错SqlExceptionHelper:131 ORA-00933: SQL command not properly ended

运行环境

jdk8+tomcat7+oracle+Eclipse+maven

项目技术(必填)

SSH + spring mvc + react.js

问题描述

代码如下:

public boolean check(Object caseId){
        String sql = "SELECT SI.ITEM_ID FROM T_CLM_SETTLE_ITEM SI INNER JOIN T_CLM_ITEM I ON SI.ITEM_ID = I.ITEM_ID INNER JOIN T_CLM_OBJECT O ON O.OBJECT_ID = I.OBJECT_ID INNER JOIN T_CLM_CASE C ON C.CASE_ID = O.CASE_ID"
                    +"WHERE C.CASE_ID =caseId ";
        
        Query query = this.getEntityManager().createNativeQuery(sql);
        query.setParameter("caseId", caseId);

        return query.getResultList().size() < 1  ? false:true;
    }

调用check方法,返回值是null,会报 SqlExceptionHelper:131 ORA-00933: SQL command not properly ended 错误。麻烦各位大神帮忙看一下代码写的有什么问题。

PS:这个方法的目的是根据case_id去查找在T_CLM_SETTLE_ITEM表中是否有对应的记录,如果有,返回true,如果没有,返回false。

所有回答列表(2)
逆袭 奋起的gravatar头像
逆袭 奋起  LV4 2018年9月7日

这个sql出错的地方在于caseId以参数的形式写应该为=:caseId,还有一处在于sql连接时用“+”时,要在O.CASE_ID"中加一个空格,即:O.CASE_ID "。这样拼起来的sql才是正确的,否则拼起来的sql中where和前面的语句就连起来了,就无法执行。PS:类似的还是有像“case when...else”本为一体的的语句也是不可以拆开再用“+”连接的。

评论(0) 最佳答案
莫晓峰的gravatar头像
莫晓峰  LV7 2018年9月13日

一看就是你sql拼接问题啊,好好检查一些 你拼接的sql  或者 你这里加一个打印 看看自己拼接的sql语句;或者断点测试。

办法总比问题多,对不

顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友