Oracle:使用 spring jdbcTemplate 将数字添加到现有列值
Oracle: Add a number to an existing column value using spring jdbcTemplate
我有一个 Oracle table 如下:
Request_id(VARCHAR2) | batch_id(VARCHAR2) | total_records(NUMBER(3,0)) | updated_records(NUMBER(3,0))
12345 | 1 | 3 | 0
现在在我的 SpringBoot 应用程序中,每当我的批处理中的每条记录都完成处理时,我正在做:
String query = "UPDATE BATCH_STATUS set UPDATED_RECORDS = (1 + UPDATED_RECORDS) WHERE REQUEST_ID = ? AND BATCH_ID = ?";
jdbcTemplate.update(query, ps -> {
ps.setString(1, requestId);
ps.setString(2, batchId);
ps.executeUpdate();
});
执行完后,updated_records的值变为2。
但是如果我 运行 在 SQL Developer 中使用相同的查询,它工作正常。
为什么会这样,如何实现我的目标?
似乎 jdbcTemplate.update
方法在内部进行了两次加法,因此输出了这样的结果。
相反,如果我使用 execute
方法,那么它工作正常。
String query = "UPDATE BATCH_STATUS set UPDATED_RECORDS = (1 + UPDATED_RECORDS) WHERE REQUEST_ID = ? AND BATCH_ID = ?";
jdbcTemplate.execute(query, (PreparedStatementCallback<Boolean>) ps -> {
ps.setString(1, requestId);
ps.setString(2, batchId));
return ps.execute();
});
我有一个 Oracle table 如下:
Request_id(VARCHAR2) | batch_id(VARCHAR2) | total_records(NUMBER(3,0)) | updated_records(NUMBER(3,0))
12345 | 1 | 3 | 0
现在在我的 SpringBoot 应用程序中,每当我的批处理中的每条记录都完成处理时,我正在做:
String query = "UPDATE BATCH_STATUS set UPDATED_RECORDS = (1 + UPDATED_RECORDS) WHERE REQUEST_ID = ? AND BATCH_ID = ?";
jdbcTemplate.update(query, ps -> {
ps.setString(1, requestId);
ps.setString(2, batchId);
ps.executeUpdate();
});
执行完后,updated_records的值变为2。
但是如果我 运行 在 SQL Developer 中使用相同的查询,它工作正常。
为什么会这样,如何实现我的目标?
似乎 jdbcTemplate.update
方法在内部进行了两次加法,因此输出了这样的结果。
相反,如果我使用 execute
方法,那么它工作正常。
String query = "UPDATE BATCH_STATUS set UPDATED_RECORDS = (1 + UPDATED_RECORDS) WHERE REQUEST_ID = ? AND BATCH_ID = ?";
jdbcTemplate.execute(query, (PreparedStatementCallback<Boolean>) ps -> {
ps.setString(1, requestId);
ps.setString(2, batchId));
return ps.execute();
});