sql >> Base de Datos >  >> RDS >> Oracle

Oracle:actualice el registro y devuelva la fecha actualizada en la misma consulta

Decidiste usar JDBCTemplate muy probablemente para simplificar el código en comparación con simple JDBC .

Este problema particular en mi humilde opinión hace que el simple JDBC solución propuesta en otra respuesta mucho más simple, por lo que definitivamente recomendaría obtener la conexión de la base de datos de JDBCTemplate y hacer la inserción de forma JDBC.

La solución más simple usando JDBCTemplate que me viene a la mente es envolver el inserto en un PROCEDURE y devolver la marca de tiempo como OUT parámetro.

Ejemplo simple (Ajuste la lógica de tiempo según sea necesario)

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;
/

La llamada se realiza 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);

El Map contiene el valor devuelto, p. [P_TIME:2019-10-19 11:58:10.0]

Pero solo puedo repetir, en este caso de uso particular, en mi humilde opinión JDBC es un rescate de JDBCTemplate;)