У меня есть функция PL/SQL в базе данных Oracle, которую я не могу изменить. Эта функция принимает параметр, который идентифицирует объект, создает копию этого объекта и затем возвращает идентификатор копии. Это выглядит какПолучение возвращаемого значения функции PL/SQL через Hibernate
FUNCTION copy_entity (ид ЧИСЛА) RETURN NUMBER
Мне нужно вызвать эту функцию из спящего режима. Я попытался создать именованный SQL запрос с чем-то подобным
ВЫЗОВА copy_entity (: ид)
как запрос, но от этого я не могу показаться, чтобы получить возвращаемое значение функции. «Возвратный скаляр» Hibernate и аналогичные параметры требуют возврата имени столбца, и у меня нет имени столбца. Это привело меня к
ВЫБРАТЬ copy_entity (: идентификатор) AS newEntityId
с «возвращением скалярными» с использованием newEntityId в качестве имени столбца, но это также не работает, так как Oracle бросает исключение, которое я не могу назвать INSERT (сохранить копию) в SELECT.
Есть ли способ получить возвращаемое значение такой функции PL/SQL? Функция на самом деле намного сложнее и по-прежнему требуется в других частях приложения, поэтому перезапись на самом деле не является вариантом.
Не «SELECT copy_entity (id) как rtnID из DUAL« работает »? – dpbradley
Нет, это приводит к исключению ORA-14551, поскольку ему не разрешено вставлять или обновлять с помощью SELECT. –