Oracle
 sql >> база данни >  >> RDS >> Oracle

Spring Data JPA, извикваща Oracle функция

Можете да извикате функцията си чрез естествена заявка и да получите резултат от dual.

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

}

Имайте предвид, че няма да работи, ако вашата функция използва DML изрази. В този случай ще трябва да използвате @Modyfing анотация над заявка, но тогава самата функция трябва да върне число поради @Modyfing ограничения за връщания тип.

Можете също да внедрите вашето CustomRepository и използвайте 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. Има ли някаква хеш функция в PL/SQL?

  2. Как да избегнем 0 стойности с помощта на функцията MIN и MAX в SQL?

  3. Защо CONNECT BY LEVEL в таблица връща допълнителни редове?

  4. Получаване на първата възникнала стойност от XML чрез анализатор на oracle

  5. ALTER &DROP Table DDL с непосредствено изпълнение в базата данни на Oracle