开发者社区> 问答> 正文

jpa 调用oracle 有out的存储过程报错 只有int的就没问题?报错

oracle创建存储过程

create or replace procedure PT(a in int,b out int)
    is
    BEGIN
        b :=1;
         dbms_output.put_line(b);
    END;
    /

实体类

@NamedStoredProcedureQuery(name="test", procedureName = "PT",parameters= {
        @StoredProcedureParameter(mode=ParameterMode.IN,type=int.class, name="a"),
        @StoredProcedureParameter(mode=ParameterMode.OUT,type=int.class, name="b")
})

Reponsitory

@Procedure(name="test")
int createPolicy(@Param("a")int a);

调用后报错:

org.springframework.dao.InvalidDataAccessApiUsageException: OUT/INOUT parameter not available: b; nested exception is java.lang.IllegalArgumentException: OUT/INOUT parameter not available: b

意思缺少b这个参数

Reponsitory  加上参数b后报错

org.springframework.dao.InvalidDataAccessApiUsageException: Can only bind values for IN/INOUT parameters : org.hibernate.query.procedure.internal.ProcedureParameterImpl@101c15ad; nested exception is java.lang.IllegalStateException: Can only bind values for IN/INOUT parameters : org.hibernate.query.procedure.internal.ProcedureParameterImpl@101c15ad
 

 

展开
收起
爱吃鱼的程序员 2020-06-06 09:46:54 1254 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB
                        <p>只有in的可以掉用 有out或者inout就报错</p>
                    
    
                        <pre>@Procedure(name="test")
    

    int createPolicy(@Param("a")int a,@Param("b")int b);

    2020-06-06 09:47:12
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
PostgresChina2018_樊文凯_ORACLE数据库和应用异构迁移最佳实践 立即下载
PostgresChina2018_王帅_从Oracle到PostgreSQL的数据迁移 立即下载
Oracle云上最佳实践 立即下载

相关镜像