Основываясь на поддержке операторов Callable и многих других документах, javax.persistence.StoredProcedureQuery представлен в jpa 2.1 для
стандартизированная поддержка работы с JDBC CallableStatements (вызовы хранимых процедур и функций)
но при попытке вызвать функцию оракула с экземпляром StoredProcedureQuery результат всегда
PLS-00221: 'function_name' is not a procedure or is undefined
Этот код, как я его использую:
StoredProcedureQuery query = em.createStoredProcedureQuery("function_name");
query.registerStoredProcedureParameter("param1", String.class, ParameterMode.IN);
query.registerStoredProcedureParameter("param2", String.class, ParameterMode.IN);
query.registerStoredProcedureParameter("param3", String.class, ParameterMode.OUT);
query.setParameter("param1", "will");
query.setParameter("param2", "smith");
query.execute();
Object param3 = query.getOutputParameterValue("param3");
Объявление моей функции выглядит так:
function "function_name"(
param1 in varchar2, param2 in varchar2, param3 out varchar2
) return number is
Так что с ним не так.
function_name
? - person Codo   schedule 29.12.2014SELECT F(X) FROM DUAL
. В вашем случае это не сработает, так как у вас есть выходной параметр. Некоторые люди возвращаются к собственным операторам (SQL). В вашем случае вы можете переписать (или обернуть) функцию как хранимую процедуру со вторым параметром OUT вместо возвращаемого значения. - person Codo   schedule 29.12.2014