Вызов функции PL / SQL из EclipseLink - PullRequest
0 голосов
/ 08 июня 2010

Я пытаюсь выполнить функцию PL / SQL в EclipseLink, которая использует специфичные для Oracle типы (например, Boolean).

Я пытался использовать PLSQLStoredProcedureCall, который жалуется, что я не выполняю процедуру, и я пытался использовать StoredFunctionCall, но это возвращает

PLS-00382: expression is of wrong type

Кто-нибудь разработал решение для вызова функций в EclipseLink с типами Oracle? Я слышал, что было бы возможно расширить StoredFunctionCall, но я бы предпочел максимально использовать существующие функциональные возможности.

1 Ответ

0 голосов
/ 08 июня 2010

Функции PL / SQL могут получать или возвращать BOOLEAN. Однако их нельзя вызывать из SQL, потому что Oracle SQL не понимает концепцию логического типа. Поскольку основное различие между функцией и процедурой заключается в том, что первая может вызываться из SQL, я никогда не видел смысла в создании функции, которая получает или возвращает логическое значение.

Так что я бы заменил его процедурой с параметром out или, по крайней мере, имел бы процедуру-оболочку, которая вызывает функцию.

CREATE OR REPLACE FUNCTION f_x (p_id IN NUMBER) RETURN BOOLEAN IS
BEGIN
   RETURN TRUE;
END f_x;

CREATE OR REPLACE PROCEDURE p_x (i_id IN NUMBER, o_val OUT BOOLEAN) IS
BEGIN
  o_val := f_x(i_id);
END p_x;
...