从EclipseLink调用PL / SQL函数

时间:2010-06-07 21:15:29

标签: oracle jdbc plsql eclipselink

我正在尝试在EclipseLink中执行使用Oracle特定类型(例如布尔值)的PL / SQL函数。

我尝试过使用PLSQLStoredProcedureCall,它抱怨我没有执行过程而且我尝试过使用StoredFunctionCall但是返回

PLS-00382: expression is of wrong type

有没有人开发过使用Oracle Types调用EclipseLink中的函数的解决方案?我听说可以扩展StoredFunctionCall,但我宁愿尽可能地利用现有的功能。

1 个答案:

答案 0 :(得分:0)

PL / SQL函数可以接收或返回BOOLEAN。但是这些不能从SQL调用,因为Oracle SQL不理解boolean的概念。由于函数和过程之间的主要区别在于前者可以从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;