问题描述
我在oracle中有一个自定义函数,在删除记录后返回一个数字。我可以在sql_plus中获取一个值,例如
I have a custom function in oracle returning a number after deleting records. I could get a value in sql_plus such as
call my_function(4) into :out_number;
其中out_number是一个定义为数字的变量。
where out_number is a variable defined as number.
当我执行PRINT OUT_NUMBER时,我可以验证out_number是否有值。
I could verify out_number has a value when I do "PRINT OUT_NUMBER."
我的问题是如何从JPA调用此函数。
My question is how to call this function from JPA.
我试过像
Query query = em.createNativeQuery("{call my_function(?)}");
query.serParameter(1, 4);
return query.executeUpdate();
并且基本上没有定义my_function得到错误。如何获取返回值,如CALL ... INTO在SQL_PLUS上?
and got an error basically my_function is not defined. How can I get a return value as in CALL...INTO on SQL_PLUS?
如果不希望这种方法,有人可以推荐任何建议吗? JPA是目前我唯一的选择。我可以创建一个存储过程,但我不确定是否可以从中获取返回值,因为不支持OUT参数。
If this method is not desirable, can someone please recommend any suggestion? JPA is the only option for me at this moment. I could create a stored procedure but I'm not sure if I can get a return value from it since OUT parameters are not supported.
感谢您的帮助!
推荐答案
我用它在oracle中执行本机函数:
I used this to execute native functions in oracle:
Query query = em.createNativeQuery("select my_function(:param) from dual");
query.setParameter("param", 4);
return query.getSingleResult();
这篇关于如何调用从JPA返回值的自定义Oracle函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!