java - 我可以使用@Procedure 在 spring-jpa 中调用 Oracle 函数吗?
问题描述
我有这个 Oracle 功能
FUNCTION fn_get_vp_id_by_hexstring (mp_hexstring VARCHAR2,
mp_fp_id NUMBER,
mp_erf_user VARCHAR2 DEFAULT USER)
RETURN NUMBER;
我想使用spring-data-jpa@Procedure
的注释来调用它。
所以我创建了这个存储库代码:
@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 假定FN_GET_VP_ID_BY_HEXSTRING
是一个过程,这意味着它期望返回值是输出参数,而不是 PL/SQL 函数的返回值。所以很明显我收到了这个错误信息(注意OUT=>:3
):
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'
有没有办法使用@Procedure
,或其他注释来调用 Oracle 函数?
解决方案
推荐阅读
- python - 将数组过滤为 3 个单独的数组
- ios - IOS的KMM依赖设置(OpenCV)
- algorithm - 什么是 PT1 阻尼算法以及它在车轮中的工作原理?
- c# - JSON 值无法转换?Blazor Web 应用程序
- css - Vue.js 和 webpack:在开发中使用 peerDependencies,但不将它们包含在生产构建中
- java - Spring集成线点击一个松弛通知
- sql - 将 xml .param SSIS 文件读入 SQL
- javascript - 寻找一种使用javascript实时计算3个输入字段中的2个的方法
- c# - 如何解决此错误?GUI 窗口试图开始渲染,而其他东西还没有完成渲染
- html - 为网页上的项目设置样式以在一行中从右向左滚动