java - SQL状态[空];错误代码[0]; ORA-00900 : invalid SQL statement with jdbcTemplate

标签 java spring oracle jdbctemplate

我在从 jdbcTemplate 执行以下查询时遇到异常

update TEMP_BRD_STATS SET STATS=null WHERE BRDC_STAT_ID=?

以下是异常(exception)情况

org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback; uncategorized SQLException for SQL [update TEMP_BRD_STATS SET STATS=null WHERE BRDC_STAT_ID=?]; SQL state [null]; error code [0]; ORA-00900: invalid SQL statement

其中 TEMP_BRD_STATS 是我的表名称 STATS,BRDC_STAT_ID 是我表中的列

注意:- STATS 列允许为 null

但是,我可以通过提供有效的 BRDC_STAT_ID 列值在 sql Developer 中成功执行查询。

例如

update TEMP_BRD_STATS SET STATS=null WHERE BRDC_STAT_ID=523;

编辑:以下是JAVA代码

result = this.jdbcTemplate.query("update TEMP_BRD_STATS SET STATS=null WHERE BRDC_STAT_ID=?",  new Object[] {523}, new QueryResultSetExtractor());

尽管抛出了异常,但执行上述代码后列值发生了变化。

假设我的列 STATS 具有“SUCCESS”值,并且在执行上述 java 代码后值更改为 null,但仍然抛出异常。有点奇怪的场景。

最佳答案

参数?显然没有填写。可能是一些参数,例如:

new Object[] { brdStatId }

一般来说,JDBC 可能不使用 PreparedStatement.executeUpdate(),而是使用基类版本 Statement.executeUpdate(String sql)


添加相关代码后:

啊,查询(SELECT)和更新(INSERT/UPDATE)混淆了:

this.jdbcTemplate.update("update TEMP_BRD_STATS SET STATS=null WHERE BRDC_STAT_ID=?", 523);

关于java - SQL状态[空];错误代码[0]; ORA-00900 : invalid SQL statement with jdbcTemplate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54550970/

相关文章:

java - 使用java线程实现的生产者-消费者只将一半的数据写入文件

java - 使用 junit +spring 测试 DAO 文件

java - JPA EntityManager 注入(inject)失败

spring - 使用Gradle将Docker镜像推送到dockerhub时​​出错

Python:比较字符串的可靠方法

oracle - 灾难恢复后 Oracle 序列会发生什么变化?

java - 以给定的延迟连续运行函数

java - 左/右对齐消息

java - Double.parse 失败

oracle - 将 Select 查询的结果获取到变量中并将其作为列值插入到另一个表中