【问题标题】:Why am I getting PLS-00306 "wrong number or types of arguments in call" when the Hibernate looks correct?当 Hibernate 看起来正确时,为什么我会收到 PLS-00306“调用中的参数数量或类型错误”?
【发布时间】:2021-06-25 16:25:36
【问题描述】:

我有以下...

PROCEDURE UPDATE (    LOAD_FLAG         in varchar2, success            OUT VARCHAR2)

我正在尝试将它与 Spring JPA 一起使用...

@Procedure("schema.package.UPDATE")
String update(@Param("LOAD_FLAG") String fullLoadFlag);

但是当我跑步时,我得到...

2021-03-29 10:56:59.315  WARN [,,,] 31256 --- [cTaskExecutor-1] o.h.engine.jdbc.spi.SqlExceptionHelper   : SQL Error: 6550, SQLState: 65000
2021-03-29 10:56:59.315 ERROR [,,,] 31256 --- [cTaskExecutor-1] o.h.engine.jdbc.spi.SqlExceptionHelper   : ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to 'UPDATE'

Hibernate 正在记录...

{调用 schema.package.UPDATE(?,?)}

所以一切看起来都是正确的,所以我错过了什么?

【问题讨论】:

  • 您的存储过程似乎需要 2 个输入参数。
  • @DaviM One 是一个输出参数,但我也尝试过它作为 INOUT
  • Hibernate 映射也显示了参数。
  • 您是否尝试过使用@Prodedure 属性“outputParameterName”?
  • @DaviM 实际上是的,我今天下午做了,它奏效了。如果您愿意,我们非常欢迎您回答

标签: java spring jpa jdbc


【解决方案1】:

尝试像这样使用@Prodedure 属性“outputParameterName”...

@Procedure(value = "schema.pkg.UPDATE", outputParameterName = "success")
String update(@Param("LOAD_FLAG") String fullLoadFlag);

其中输出参数名称是输出变量的名称。

【讨论】:

  • 我更新了,当修改被批准后我会接受。
  • 编辑已获批准。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-22
  • 2014-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多