我正在尝试执行具有数组类型(VARRAY)输出参数的oracle过程。此数组类型在包中定义。
VARRAY定义:
create or replace
package PKG_TYPES_VARIABLES
as
TYPE RETURNARRAY IS VARRAY(100) OF VARCHAR2(2000);
end;
当我尝试使用JDBC执行存储过程时,我得到了以下的执行。
invalid name pattern: PKG_TYPES_VARIABLES.RETURNARRAY
Java代码:
oracleCallableStmt =
(OracleCallableStatement) dbTransaction.createCallableStatement("begin pkg1.prc_MasterValidation(?); end;", 0);
oracleCallableStmt.registerOutParameter(1, OracleTypes.ARRAY, "PKG_TYPES_VARIABLES.RETURNARRAY");
oracleCallableStmt.executeUpdate();
我们不能注册包中定义的数组输出参数吗?当我在谷歌中搜索此错误时,每个人都说在包中定义类型时无法调用这些类型。但那些博客/论坛已经很老了。
即使在最新的jdbc和oracle 12c db中,如果在包中定义了类型,我们也无法调用它们吗?任何人都可以解释为什么会有这样的限制吗?