Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Oracle - zaktualizuj rekord i zwróć zaktualizowaną datę w tym samym zapytaniu

Zdecydowałeś się użyć JDBCTemplate najprawdopodobniej w celu uproszczenia kodu w porównaniu do zwykłego JDBC .

Ten konkretny problem IMHO sprawia, że ​​zwykły JDBC rozwiązanie proponowane w inna odpowiedź znacznie prostsze, więc zdecydowanie polecam uzyskać połączenie z bazą danych z JDBCTemplate i zrobić wstawkę w sposób JDBC.

Najprostszym rozwiązaniem przy użyciu JDBCTemplate, które przychodzi mi do głowy, jest zawinięcie wstawki w PROCEDURE i zwróć znacznik czasu jako OUT parametr.

Prosty przykład (dostosuj logikę czasu zgodnie z wymaganiami)

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

Połączenie odbywa się za 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 zawiera zwróconą wartość np. [P_TIME:2019-10-19 11:58:10.0]

Ale mogę tylko powtórzyć, w tym konkretnym przypadku użycia jest IMHO JDBC ratunkiem od JDBCTemplate;)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Błąd SQL Developer Nie można znaleźć wirtualnej maszyny Java

  2. Wstawianie obrazu do BLOB Oracle 10g

  3. Używanie SELECT UNION i zwracanie danych wyjściowych dwóch kolumn z jednej tabeli

  4. Jak zsynchronizować metodę java wywoływaną przez PL/SQL

  5. Połączenia Oracle i VS2012