小编典典

Oracle-更新记录并在同一查询中返回更新日期

java

我将Java 8与Spring’s JdbcTemplate和Oracle 12.1结合使用,

我想更新记录并获取更新的确切时间记录

jdbcTemplate.update(UPDATE_SQL, null);

当前它返回(int)受影响的行数,但是我想要确切的更新日期

我是否必须发送新请求以获取可能不正确的当前时间?

更确切的是将更新日期保存在列中,然后执行另一个SQL

是否有另一个选项可在一个查询中获取更新日期?

显然,我也不想使用从代码获取日期(如new Date()),因为服务器时间与数据库时间不同


阅读 304

收藏
2020-11-26

共1个答案

小编典典

纯JDBC 相比,您决定使用JDBCTemplate最有可能简化代码。

IMHO的这个特殊问题使其他答案中提出的 普通JDBC
解决方案更加简单,因此,我绝对建议从JDBCTemplate获取数据库连接并以JDBC方式进行插入。

我想到的使用JDBCTemplate的最简单解决方案是将插入内容包装在中,PROCEDURE然后将时间戳作为OUT参数返回。

简单示例(根据需要调整时间logik)

create procedure insert_with_return_time (p_str VARCHAR2, p_time OUT DATE) as
BEGIN 
   insert into identity_pk(pad) values(p_str);
   p_time := sysdate;
END;
/

通话使用 SimpleJdbcCall

SimpleJdbcCall jdbcCall = new SimpleJdbcCall(jdbcTemplate).withProcedureName("insert_with_return_time");
SqlParameterSource params = new MapSqlParameterSource().addValue("p_str", str);
Map<String, Object> out = jdbcCall.execute(params);

Map包含返回的值,例如,[P_TIME:2019-10-19 11:58:10.0]

但我只能重复一遍,在这个特殊的用例中,IMHO JDBC是从JDBCTemplate中抢救过来的 ;)

2020-11-26