sql >> Databáze >  >> RDS >> Oracle

Oracle - aktualizovat záznam a vrátit aktualizované datum ve stejném dotazu

Rozhodli jste se použít JDBCTemplate s největší pravděpodobností ke zjednodušení kódu ve srovnání s prostým JDBC .

Tento konkrétní problém IMHO dělá prostý JDBC řešení navržené v jiná odpověď mnohem jednodušší, takže bych rozhodně doporučil získat připojení k databázi z JDBCTemplate a provést vložení způsobem JDBC.

Nejjednodušší řešení pomocí JDBCTemplate, které mě napadá, je zabalit vložku do PROCEDURE a vrátí časové razítko jako OUT parametr.

Jednoduchý příklad (upravte logiku času podle potřeby)

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

Volání se provádí pomocí 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 obsahuje vrácenou hodnotu např. [P_TIME:2019-10-19 11:58:10.0]

Ale mohu jen opakovat, v tomto konkrétním případě použití je IMHO JDBC záchrana z JDBCTemplate;)



  1. Jaké jsou náklady na indexování více sloupců db?

  2. Operace není povolena po uzavření ResultSet (mysql, java)

  3. Postgis SQL pro nejbližší sousedy

  4. Je možné uložit obrázek v edici Oracle 11g express?