Как вызвать функцию Oracle, которая возвращает sys_refcursor с помощью EclipseLink?Как вызвать функцию с помощью EclipseLink
Существует документация, в которой говорится о вызове функции, но обязательно, как вызвать функцию, которая возвращает sys_refcursor.
http://eclipse.org/eclipselink/documentation/2.4/jpa/extensions/a_namedstoredfunctionquery.htm
Я попытался следующие
@NamedStoredFunctionQuery(name = "findEmployees",
functionName = "getEmps",
parameters =
{ @StoredProcedureParameter(queryParameter = "user",
name = "username",
direction = Direction.IN,
type = String.class)
} ,
returnParameter = @StoredProcedureParameter(queryParameter = "c_cursor")
)
Oracle Функция
CREATE or REPLACE FUNCTION getEmps (username varchar2)
RETURN SYS_REFCURSOR
AS
c_cursor SYS_REFCURSOR;
BEGIN
OPEN c_cursor FOR
SELECT * FROM employees where emp_no=username;
RETURN c_cursor;
Однако, когда я исполняю, я получаю следующие ошибки
Внутренняя Исключение: java.s ql.SQLException: ORA-06550: строка 1, столбец 13: PLS-00382: выражение неправильного типа ORA-06550: строка 1, столбец 7: PL/SQL: Заявление игнорировали
Код ошибки: 6550 Звоните: НАЧАТЬ? : = getEmps (имя пользователя =>?); КОНЕЦ; связываются => [=> c_cursor, S7845] Запрос: DataReadQuery (Name = "findEmps") в org.eclipse.persistence.internal.jpa.QueryImpl.getDetailedException (QueryImpl.java:378) на org.eclipse. persistence.internal.jpa.QueryImpl.executeReadQuery (QueryImpl.java:260) в org.eclipse.persistence.internal.jpa.QueryImpl.getResultList (QueryImpl.java:469)
Как я могу решить эту проблему ?
может разместить свой plsql storedFunction? –
Возможно, вы попытались выполнить недопустимый блок функции PLSQL, но произошла ошибка компиляции. –
@CHHIBIAMOR Я включил свою функцию PLSQL в свой вопрос, и функция скомпилирована, и я успешно выполнял ее из других программ. Когда я попытался позвонить с помощью EclipseLink, я не был успешным. – user75ponic