SQL状态[空];错误代码 [0]; ORA-00900: jdbcTemplate 的 SQL 语句无效

SQL state [null]; error code [0]; ORA-00900: invalid SQL statement with jdbcTemplate

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

update TEMP_BRD_STATS SET STATS=null WHERE BRDC_STAT_ID=?

以下是例外

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 是我的 table 名称统计信息,BRDC_STAT_ID 是我的 table

中的列

注意:- STATS 列允许为 null

不过,我可以通过提供有效的 BRDC_STAT_ID 列值在 sql 开发人员中成功执行查询。

例如

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(),而是基础 class 版本 Statement.executeUpdate(String sql)


添加问题代码后:

啊,query (SELECT) 和 update (INSERT/UPDATE) 混淆了:

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