sql >> Database teknologi >  >> RDS >> Oracle

Oracle - opdater post og returner opdateret dato i samme forespørgsel

Du besluttede at bruge JDBCTemplate højst sandsynligt for at forenkle koden i forhold til almindelig JDBC .

Dette særlige problem IMHO gør den almindelige JDBC løsning som foreslået i andet svar meget enklere, så jeg vil klart anbefale at få databaseforbindelsen fra JDBCTemplate og lave indsættelsen på en JDBC-måde.

Den enkleste løsning, der bruger JDBCTemplate, jeg tænker på, er at pakke indsatsen ind i en PROCEDURE og returner tidsstemplet som en OUT parameter.

Simpelt eksempel (Juster tidslogikken 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;
/

Opkaldet udføres ved hjælp af 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 indeholder den returnerede værdi f.eks. [P_TIME:2019-10-19 11:58:10.0]

Men jeg kan kun gentage, i dette særlige tilfælde er IMHO JDBC en redning fra JDBCTemplate;)



  1. få børnekategoriens overordnede navn med en enkelt forespørgsel i mysql

  2. Kan jeg oprette en global funktion i SQL Server?

  3. Sådan udføres en Accent Sensitive-søgning i MySql

  4. To borde, med et til mange forhold. Hvordan forbinder man værdier uden dublerede rækker?