sql >> Database >  >> RDS >> Oracle

Oracle - update record en retourneer bijgewerkte datum in dezelfde query

Je hebt besloten om JDBCTemplate waarschijnlijk te gebruiken om de code te vereenvoudigen in vergelijking met gewone JDBC .

Dit specifieke probleem maakt IMHO de duidelijke JDBC oplossing zoals voorgesteld in ander antwoord veel eenvoudiger, dus ik zou zeker aanraden om de databaseverbinding van JDBCTemplate te halen en de invoeging op een JDBC-manier te maken.

De eenvoudigste oplossing met JDBCTemplate die bij mij opkomt, is om de bijlage in een PROCEDURE te wikkelen en retourneer de tijdstempel als een OUT parameter.

Eenvoudig voorbeeld (Pas de tijdlogica aan zoals vereist)

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

De oproep wordt gedaan met behulp van 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);

De Map bevat de geretourneerde waarde, b.v. [P_TIME:2019-10-19 11:58:10.0]

Maar ik kan alleen maar herhalen, in dit specifieke geval is IMHO JDBC een redding van JDBCTemplate;)



  1. PHP Oracle query select statement binnen lus traag

  2. De huidige rowversion-waarde voor een SQL Server-database retourneren (T-SQL-voorbeeld)

  3. codeIgniter gebruik mysql_real_escape_string() in plaats daarvan.database verbindingsprobleem

  4. Formulier wordt opnieuw verzonden bij vernieuwen