Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle - Datensatz aktualisieren und aktualisiertes Datum in derselben Abfrage zurückgeben

Sie haben sich höchstwahrscheinlich für JDBCTemplate entschieden, um den Code im Vergleich zu reinem JDBC zu vereinfachen .

Dieses besondere Problem macht meiner Meinung nach das einfache JDBC Lösung wie in andere Antwort vorgeschlagen viel einfacher, daher würde ich definitiv empfehlen, die Datenbankverbindung von JDBCTemplate zu erhalten und die Einfügung auf JDBC-Weise vorzunehmen.

Die einfachste Lösung mit JDBCTemplate, die mir in den Sinn kommt, besteht darin, die Einfügung in ein PROCEDURE einzuschließen und den Zeitstempel als OUT zurückgeben Parameter.

Einfaches Beispiel (Passen Sie die Zeitlogik nach Bedarf an)

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

Der Aufruf erfolgt über 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);

Die Map enthält den zurückgegebenen Wert z.B. [P_TIME:2019-10-19 11:58:10.0]

Aber ich kann nur wiederholen, in diesem speziellen Anwendungsfall ist IMHO JDBC eine Rettung von JDBCTemplate;)