0

我有一个 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 
4

1 回答 1

1

包括您的查询代码。

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

见, http://wiki.eclipse.org/EclipseLink/Examples/JPA/PLSQLStoredFunction

于 2011-11-15T19:39:07.870 回答