gpt4 book ai didi

java - 使用 @Query 调用存储过程会导致异常 : wrong number or types of arguments in call to ProcedureName

转载 作者:行者123 更新时间:2023-12-01 18:39:01 25 4
gpt4 key购买 nike

我在调用存储过程时遇到问题

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'

最佳答案

您已经使用三个参数声明了存储过程,但在 @Query 注释的 SQL 脚本中仅使用两个参数来调用它。

一旦解决这个问题,您将遇到下一个问题,因为您的脚本不返回值。 JPA 不知道从中返回什么,因此 Spring Data JPA 也是如此。我完全不确定是否可以通过您选择的方法来解决这个问题。

对于使用 JPA 调用存储过程,我强烈推荐 declaring them using @NamedStoredProcedureQuery 。然后您可以access that stored procedure using Spring Data JPA .

关于java - 使用 @Query 调用存储过程会导致异常 : wrong number or types of arguments in call to ProcedureName,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59981712/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com