Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Oracle - atualiza registro e retorna data atualizada na mesma consulta


Você decidiu usar o JDBCTemplate provavelmente para simplificar o código em comparação com o JDBC simples .

Este problema específico IMHO torna o JDBC simples solução conforme proposta em outra resposta muito mais simples, então definitivamente recomendo obter a conexão com o banco de dados do JDBCTemplate e fazer a inserção de maneira JDBC.

A solução mais simples usando JDBCTemplate que me vem à mente é envolver a inserção em um PROCEDURE e retorne o timestamp como um OUT parâmetro.

Exemplo simples (Ajuste o logik de tempo conforme necessário)
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;
/

A chamada é feita usando 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);

O Map contém o valor retornado, por exemplo [P_TIME:2019-10-19 11:58:10.0]

Mas só posso repetir, neste caso de uso específico é IMHO JDBC um resgate de JDBCTemplate;)