2014-09-04 64 views
0

你好,我使用的EclipseLink 2.5.1StoredProcedureQuery用于调用Oracle函数吗?

我想知道,是否有可能使用javax.persistence.StoredProcedureQuery来调用Oracle PL/SQL 功能

我试着这样做,但得到错误PLS-00221: 'function_name' is not a procedure or is undefined

如果不是,如果我想坚持使用JPA标准,调用函数的正确方法是什么?没有类型StoredFunctionQuery。我需要在查询中执行select语句吗?

回答

1

JPA StoredProcedureQuery映射到JDBC CallableStatement。这就是所有知道的。如果使用Oracle可以调用Oracle“函数”,那么任何JPA实现都应该能够使用JPA API调用它们。

如果“甲骨文功能”是一个正常的SQL函数,那么你可以在JPA 2.1使用使用它们在任何正常JPQL语句“FUNCTION(了funcName,参数)”

+0

我已经试过了,似乎PL/Sql函数不是可调用语句,因为一个函数返回一个值,所以它必须像variable_name:= function_name(1234) – Roland 2014-09-04 18:04:33

+1

一样使用,因此您在JPA中使用本机查询(对于所有不是_standard_ SQL存储的特效) – 2014-09-05 05:35:18

+0

比利很好的提示,但我得到错误设置这样的查询: '从双双' ' select FUNCTION('function_name','foo',1234)什么是正确的方法? – Roland 2014-09-05 12:08:17