【发布时间】:2018-07-12 04:56:33
【问题描述】:
如果有人经历过从 spring 数据中调用 oracle 存储过程,请指定模式、包和过程名称。 我有以下实体:
@Entity
@Table(name = "ENTITY", schema = "SCHEMA_ENTITY")
@NamedStoredProcedureQueries({
@NamedStoredProcedureQuery(name = "name1",
procedureName = "packageName.procName",
parameters = {
@StoredProcedureParameter(mode = ParameterMode.IN, name = "param1", type = String.class),
@StoredProcedureParameter(mode = ParameterMode.OUT, name = "return_value", type = BigDecimal.class)
})})
public class EntityExp {
@Id
private Long keyId;
...
}
存储库:
public interface EntityRepository extends JpaRepository<EntityExp, Long> {
@Procedure(name = "name1")
BigDecimal test(@Param("param1") String param1);
}
在服务实现中,自动装配后,我调用如下过程:
BigDecimal returnVal = entityRepository.test(param1);
oracle存储过程定义为:
create or replace PACKAGE packageName as
function procName(param1 IN VARCHAR)
RETURN NUMBER;
END packageName;
create or replace PACKAGE BODY packageName
IS
function procName (param1 IN VARCHAR)
RETURN NUMBER
IS
BEGIN
return 1;
END;
END;
如果我使用 PL/Sql 调用它,该过程可以正常工作。
我收到以下错误:
PLS-00201: identifier 'package.procName' must be declared
我还测试了许多配置,例如在过程中指定架构:
@Procedure(name = "SCHEMA_ENTITY.name1")
BigDecimal test(@Param("param1") String param1);
但还是失败了……
我在调用存储过程时找不到任何使用 schema + package + procedureName 的示例...
有什么建议吗?
【问题讨论】:
标签: oracle jpa stored-procedures spring-data