将用户定义的TABLE类型传递给存储的Oracle函数

时间:2011-11-08 17:30:29

标签: sql oracle eclipselink nativequery

我有一个oracle函数定义为:

FUNCTION SELECTINBOX (FA_FROMUSERLIKE IN PKGSMSTYPES.MAXVARCHAR2_T DEFAULT NULL , 
        FA_INBOXOWNER IN PKGSMSTYPES.MAXVARCHAR2_T, 
        FA_A_URGENCY IN G_INTARRAY_TBL DEFAULT NULL , 
        FA_PAGENO IN NUMBER DEFAULT 1
) RETURN G_SMSNOTES_TBL; 

其中G_INTARRAY_TBL定义为,

create or replace
TYPE G_INTARRAY_TBL AS TABLE OF NUMBER; 

我正在使用eclipselink构建查询。如果我在查询字符串中将G_INTARRAY_TBL硬编码为null,但是如果我尝试将BigDecimals列表传递给它,则查询工作正常,我收到错误,

Internal Exception: java.sql.SQLException: Invalid column type
Error Code: 17004 

1 个答案:

答案 0 :(得分:1)

包含您的查询代码。

您需要使用PLSQLStoredFunctionCall(@NamedPLSQLStoredFunctionQuery)。您还需要使用VARRAY类型镜像PLSQL TABLE类型。

请参阅, http://wiki.eclipse.org/EclipseLink/Examples/JPA/PLSQLStoredFunction