Использование @NamedPLSQLStoredFunctionQuery с логическим параметром IN, SYS.SQLJUTL не установлен
Среда- JavaSE 6, Oracle 11, WebSphere 7, eclipseLink 2.5.2
Вариант использования, который мы хотели бы использовать
@NamedPLSQLStoredFunctionQuery
как это:
@NamedPLSQLStoredFunctionQuery
(name = "convertToString",
functionName = "my_schema.my_package.convert_to_string",
parameters =
{ @PLSQLParameter(name = "p_boolean", databaseType = "BOOLEAN") },
returnParameter = @PLSQLParameter(name = "RESULT", databaseType = "VARCHAR_TYPE"))
Затем мы выполняем такие функции:
Query query = em.createNamedQuery("convertToString");
query.setParameter("p_boolean", true);
Object result = query.getSingleResult();
System.out.println("result=" + result);
и / или
Query query = em.createNamedQuery("convertToInteger");
query.setParameter("p_boolean", true);
Object result = query.getSingleResult();
System.out.println("result=" + result);
Наша реализация функций Oracle выглядит следующим образом:
CREATE OR REPLACE package body my_schema.my_package
as
/**
* Converts the given boolean into an integer (true: 1, false: 0).
* @param p_boolean boolean value to convert to an integer
*/
function convert_to_integer
(
p_boolean in boolean
)
return integer
is
begin
if (p_boolean = true) then
return isac_api.api_boolean_constants_pg.integer_true;
end if;
return isac_api.api_boolean_constants_pg.integer_false;
end;
/**
* Converts the given boolean into a string (true: 'true', false: 'false').
* @param p_boolean boolean value to convert
*/
function convert_to_string
(
p_boolean in boolean
)
return varchar2
is
begin
if (p_boolean = true) then
return isac_api.api_boolean_constants_pg.string_true;
end if;
return isac_api.api_boolean_constants_pg.string_false;
end;
end;
Это на самом деле не работает.
Вопросы
- В чем проблема?
- Что мы можем сделать, если нам не разрешено устанавливать 'SYS.SQLJUTL' в базу данных, НО eclipseLink, кажется, использует его для преобразований?
С уважением Ян