0

我正在尝试执行一个具有数组类型(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 中,如果它们在包中定义,我们也不能调用这些类型是真的吗?谁能解释一下为什么会有这样的限制?

4

0 回答 0