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

Spring Data JPA wywołuje funkcję Oracle

Możesz wywołać swoją funkcję za pomocą natywnego zapytania i uzyskać wynik z podwójnego.

public interface HelloWorldRepository extends JpaRepository<HelloWorld, Long> {

    @Query(nativeQuery = true, value = "SELECT PKG_TEST.HELLO_WORLD(:text) FROM dual")
    String callHelloWorld(@Param("text") String text);

}

Zauważ, że nie zadziała, jeśli twoja funkcja używa instrukcji DML. W takim przypadku będziesz musiał użyć @Modyfing adnotacja nad zapytaniem, ale sama funkcja musi zwrócić liczbę z powodu @Modyfing ograniczenia typu zwrotu.

Możesz także zaimplementować swoje CustomRepository i użyj SimpleJdbcCall :

import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
import org.springframework.jdbc.core.namedparam.SqlParameterSource;
import org.springframework.jdbc.core.simple.SimpleJdbcCall;
import org.springframework.stereotype.Repository;

@Repository
public class HelloWorldRepositoryImpl implements HelloWorldRepositoryCustom {

    @Autowired
    private JdbcTemplate jdbcTemplate;

    @Override
    public String callHelloWorld() {
        SimpleJdbcCall jdbcCall = new SimpleJdbcCall(jdbcTemplate)
                .withCatalogName("PKG_TEST") //package name
                .withFunctionName("HELLO_WORLD");
        SqlParameterSource paramMap = new MapSqlParameterSource()
                .addValue("param", "value"));
        //First parameter is function output parameter type.
        return jdbcCall.executeFunction(String.class, paramMap));
    }

}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. jak zaktualizować dane za pomocą zapytania hibernacji posiadającego właściwość parent w klauzuli where

  2. Jak najlepiej mogę odtworzyć bazę danych Oracle?

  3. Konwertuj liczbę na słowa w indyjskim systemie liczbowym

  4. Jak wykonać surowe zapytanie z powrotem w sqlalchemy

  5. Jak zamawiać według nazwy miesiąca w PostgreSQL lub Oracle?