Вызов хранимой процедуры с @Query приводит к исключению: неправильный номер или типы аргументов при вызове имя_процесса - PullRequest
0 голосов
/ 30 января 2020

У меня проблема с вызовом хранимой процедуры

create or replace PROCEDURE TProc1 
                            (i_cob_date IN   DATE,
                             i_location IN   VARCHAR2,
                             o_ret      OUT  VARCHAR2
                            )
AS
BEGIN
 --logic to update a table based on i_cob_date 

    o_ret := '0';
    commit;

END TProc1;
public interface MyRepository extends CrudRepository<MyEntity, Long> {

    @Query(value = "call TProc1(:i_cob_date, :i_location)", nativeQuery = true)
    String markStatus(@Param("i_cob_date")Date cobDate, @Param("i_location")String location);

}

Я использую SpringBoot с Spring Data JPA, когда я пытался вызвать метод, который я получил ниже ошибка.

Could not extract the ResultSet
Caused by: java.sql.SQLException: ORA-06553: PLS-306: wrong number or types of arguments in call to 'TProc1'

1 Ответ

0 голосов
/ 30 января 2020

Вы объявили свою хранимую процедуру с тремя параметрами, но вызываете ее только с двумя в сценарии SQL в аннотации @Query.

Как только это будет исправлено, вы запустите следующий проблема, потому что ваш скрипт не возвращает значение. JPA не знает, что из этого получить, и поэтому то же самое верно для JPA Spring Data. Я совсем не уверен, можно ли это исправить с помощью выбранного вами подхода.

Для вызова хранимых процедур с помощью JPA я настоятельно рекомендую объявить их с помощью @NamedStoredProcedureQuery. Затем вы можете получить доступ к этой хранимой процедуре, используя Spring Data JPA .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...