![](/img/trans.png)
[英]ORA-00900: invalid SQL statement - NamedParameterJdbcTemplate
[英]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; 未分类SQL的SQLException [更新TEMP_BRD_STATS SET STATS = null WHERE BRDC_STAT_ID =?]; SQL状态[null]; 错误代码[0]; ORA-00900:无效的SQL语句
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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.