Java 我可以使用@Procedure在SpringJPA中调用Oracle函数吗?
我有这个神谕功能Java 我可以使用@Procedure在SpringJPA中调用Oracle函数吗?,java,spring,spring-data-jpa,Java,Spring,Spring Data Jpa,我有这个神谕功能 FUNCTION fn_get_vp_id_by_hexstring (mp_hexstring VARCHAR2, mp_fp_id NUMBER, mp_erf_user VARCHAR2 DEFAULT USER) RETURN NUMB
FUNCTION fn_get_vp_id_by_hexstring (mp_hexstring VARCHAR2,
mp_fp_id NUMBER,
mp_erf_user VARCHAR2 DEFAULT USER)
RETURN NUMBER;
我想使用的@过程
注释调用它
因此,我创建了以下存储库代码:
@Procedure(procedureName = "FN_GET_VP_ID_BY_HEXSTRING")
Integer getVpIdByHexString(
@Param("mp_hexstring") String hexstring,
@Param("mp_fp_id") Integer fp_id,
@Param("mp_erf_user") String user);
这是行不通的,因为spring假设通过hextstring获取VP ID是一个过程,这意味着它期望返回值是一个输出参数,而不是PL/SQL函数的返回值。很明显,我收到了这个错误消息(注意OUT=>:3
):
有没有一种方法可以使用
@Procedure
或其他注释来调用Oracle函数?我刚才也在寻找同样的方法。在搜索文档和查看spring源代码之后,我觉得当时这是不可能的。我目前使用org.springframework.jdbc.object.SotredProcedure
进行函数调用。如果你找到了一个方法,请分享它作为一个答案。谢谢。我刚才也找过同样的东西。在搜索文档和查看spring源代码之后,我觉得当时这是不可能的。我目前使用org.springframework.jdbc.object.SotredProcedure
进行函数调用。如果你找到了一个方法,请分享它作为一个答案。谢谢。
Caused by: Error : 6550, Position : 6, Sql = BEGIN FN_GET_VP_ID_BY_HEXSTRING(MP_HEXSTRING=>:0,MP_FP_ID=>:1,MP_ERF_USER=>:2,OUT=>:3); END;, OriginalSql = {call FN_GET_VP_ID_BY_HEXSTRING(?,?,?,?)}, Error Msg = ORA-06550: Zeile 1, Spalte 7:
PLS-00306: wrong number or types of arguments in call to 'FN_GET_VP_ID_BY_HEXSTRING'