我正在尝试执行一个具有数组类型(VARRAY)输出参数的 oracle 过程。此数组类型在包中定义。
VARRAY 定义:
create or replace
package PKG_TYPES_VARIABLES
as
TYPE RETURNARRAY IS VARRAY(100) OF VARCHAR2(2000);
end;
当我尝试使用 JDBC 执行存储过程时,我得到了以下 execption。
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();
我们不能注册一个包中定义的数组输出参数吗?当我在 google 中搜索此错误时,每个人都说在 package.json 中定义类型时无法调用它们。但是那些博客/论坛已经很老了。
即使在最新的 jdbc 和 oracle 12c db 中,如果它们在包中定义,我们也不能调用这些类型是真的吗?谁能解释一下为什么会有这样的限制?