Spring JDBC 给出 ORA-00933 : SQL command not properly ended But Query Runs OK in DB Client

标签 spring spring-jdbc jdbctemplate

以下 Oracle 查询在我的数据库客户端 PL/SQL Developer 中运行正常,并返回 1 个结果。

在我的 Java 应用程序中通过 NamedParameterJdbcTemplate (SpringJDBC) 运行它时,我得到

java.sql.SQLSyntaxErrorException: ORA-00933: SQL command not properly ended

不可能有任何空间问题或任何明显的问题,因为这个精确的查询是在 PL/SQL 中完成的。

private static final String SELECT1 = 
        " SELECT COUNT(*) " 
        " FROM table1 t1, table2 t2 " + 
        " WHERE t1.received_date > TRUNC(sysdate - 1) " + 
        " AND t1.received_date < TRUNC(sysdate) " + 
        " AND t1.type IN ('TYPE1', 'TYPE2') " + 
        " AND t2.received_num = t1.received_num; ";

public int getSelect1() {

    HashMap<String,Object> paramMap = new HashMap<String,Object>();     
    return jdbcTemplate.queryForObject(SELECT1, paramMap, Integer.class);       
}   

最佳答案

我认为您不需要带有 sql 字符串的分号。

private static final String SELECT1 = 
        " SELECT COUNT(*) " +
        " FROM table1 t1, table2 t2 " + 
        " WHERE t1.received_date > TRUNC(sysdate - 1) " + 
        " AND t1.received_date < TRUNC(sysdate) " + 
        " AND t1.type IN ('TYPE1', 'TYPE2') " + 
        " AND t2.received_num = t1.received_num ";

关于Spring JDBC 给出 ORA-00933 : SQL command not properly ended But Query Runs OK in DB Client,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32894997/

相关文章:

java - Spring阻止用户通过浏览器和ajax访问url

java - Spring在没有javax.servlet和HttpServletRequest的情况下获取ip地址

java - 不使用命名参数时重用 sql 参数

java - Spring 中静态 JdbcTemplate 的替代方案

sql - Spring JDBCTemplate : execute a query with Join

java - 如何在使用 spring jdbcTemplate 发出 REST 更新请求时验证记录是否存在?

Spring bean 未注入(inject)基于 flyway java 的迁移

java - JPA findAll 可分页请求总数按列分组

java - org.springframework.beans.factory.CannotLoadBeanClassException : Cannot find class [com. Dao.ApplicationDaoImpl] 对于名称为'的bean

java - 如何使用 JdbcTemplate 中的提取大小来处理 20+ 百万行?