当前位置: 首页 > 知识库问答 >
问题:

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

华子昂
2023-03-14

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

update TEMP_BRD_STATS SET STATS=null WHERE BRDC_STAT_ID=?

以下是例外

org.springframework.jdbc.UncategorizedSQLException:PreparedStatementCallback;SQL的未分类SQLException[update TEMP_BRD_STATS SET STATS=null,其中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,但仍然引发异常。有点奇怪。

共有1个答案

司寇祖鹤
2023-03-14

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

new Object[] { brdStatId }

通常,JDBC可能使用的不是PreparedStatement.executeUpdate(),而是基类版本Statement.executeUpdate(String sql)

添加相关代码后:

啊,查询(选择)和更新(插入/更新)混在一起:

this.jdbcTemplate.update("update TEMP_BRD_STATS SET STATS=null WHERE BRDC_STAT_ID=?", 523);
 类似资料:
  • 我已使用以下代码创建了一个Oracle SP。如果我从SQLDeveloper执行它,那么它运行时不会出现任何错误/问题。但是,当我尝试从.NET代码调用同一SP时,将引发一个异常,并显示消息“Oracle.DataAccess.Client.OracleException:ORA-00900:invalid SQL statement”。 Oracle SP代码: 我的VB.NET代码: 有什么

  • 我正在尝试创建一个与DAO.sql链接的DAO接口。stg字符串模板文件。查询非常简单,只需按id选择。 MyDao.groovy: MyDao.sql.stg: 我的后端数据库是甲骨文。我在甲骨文SQLDeveloper中尝试过这个查询,它工作得很好,但是当我使用应用程序和sql.stg文件运行查询时,它会给我: 我怀疑它不知怎么找不到sql。stg文件,即使我在POM中包含了资源目录。 如何让

  • 我正在使用Oracle ODBC驱动程序,希望动态传递变量。我的查询是这样的: 虽然这个查询在OracleSQLDeveloper中运行良好,但我认为我没有为ODBC驱动程序正确执行编写查询。有什么建议吗? 从ODBC日志: 退出SQLExecDirectW,返回代码为-1(SQL_错误)“define val='Test';\a从Name='Test'所在的表中选择*

  • 在Oracle的SQL developer中,我创建了一个名为BBS_COUNT_base的表,其定义如下: 我还使用以下语句在表中插入了一条记录: 现在,使用SQLDeveloper,我可以使用 将基本edn值更新为(在本测试案例中)相同的值。 但是,当我试图将此语句传递给clojure.java.jdbc/query时,JDBC驱动程序错误输出,标题中显示了错误。有人知道为什么JDBC驱动程序

  • 错误代码1064,SQL状态42000:您的SQL语法中有一个错误;请查看与您的MySQL服务器版本相对应的手册,以便在第1行“option sql_select_limit=default”附近使用正确的语法 我花了很多时间寻找解决方案,但没有找到解决方案:(

  • 我试图使用和子句以及子查询来删除另一个表上的查询所给出的行,该表与我要删除的表是1比1,但Oracle 11g2向我抛出了一个完全没有帮助的ORA-00900错误,如下面的SQL fiddle: http://sqlfiddle.com/#!4/93171/1 对于那些无法使用SQLFIDLE的用户,我使用的模式/初始负载是(我使用而不是来实现测试可移植性,“野生”数据使用): 我想说的是: (自