2010-06-07 27 views
0

我试图在使用Oracle特定类型(例如Boolean)的EclipseLink中执行PL/SQL函数。从EclipseLink调用PL/SQL函数

我使用PLSQLStoredProcedureCall这抱怨,我不是执行程序,我一直在使用StoredFunctionCall尝试,但返回

PLS-00382: expression is of wrong type 

有没有人开发的解决方案来调用的EclipseLink功能与Oracle类型试过吗?我听说可以扩展StoredFunctionCall,但我宁愿尽可能多地利用现有的功能。

+0

什么时候甲骨文添加布尔数据类型? – 2010-06-07 21:18:58

+0

我不确定,但我有大量定义为返回BOOLEAN的PL/SQL函数。 – 2010-06-07 21:36:53

回答

0

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;