sql >> Databasteknik >  >> RDS >> Oracle

Oracle - uppdatera post och returnera uppdaterat datum i samma fråga

Du bestämde dig för att använda JDBCTemplate för att förenkla koden i jämförelse med vanlig JDBC .

Detta speciella problem IMHO gör den vanliga JDBC lösning som föreslagits i annat svar mycket enklare, så jag rekommenderar definitivt att du hämtar databasanslutningen från JDBCTemplate och gör insättningen på ett JDBC-sätt.

Den enklaste lösningen med JDBCTemplate som jag tänker på är att linda in bilagan i en PROCEDURE och returnera tidsstämpeln som en OUT parameter.

Enkelt exempel (Justera tidslogiken efter behov)

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

Samtalet görs med 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 innehåller det returnerade värdet t.ex. [P_TIME:2019-10-19 11:58:10.0]

Men jag kan bara upprepa, i detta specifika användningsfall är IMHO JDBC en räddning från JDBCTemplate;)



  1. SQL Server :returnerar kolumnnamn baserat på en posts värde

  2. MySQL Merging Två fält från två tabeller till ett fält i resultatuppsättningen

  3. Spara utdata från sql-funktionen till csv-fil (COPY) med dynamiskt filnamn

  4. php-variabel i MySQL-radnamn