我在 oracle 中的过程是在一个包下定义的,该包具有记录表的输入和输出参数。我可以使用 java 中的可调用语句使用 packagename.procname 调用该过程。但是要访问 out 参数,我需要定义一个 ARRAY 类型的变量。但是oracle中的记录类型和记录表是在包里面定义的。因此这些类型不能使用 ARRAYDESCRIPTOR 从 java 中访问。
proc和类型定义如下:
CREATE OR REPLACE PACKAGE mypackage IS
TYPE TY_Pos IS RECORD
( cust_id VARCHAR2(9)
, balance NUMBER
);
TYPE TY_TBL IS TABLE OF TY_Pos INDEX BY PLS_INTEGER;
PROCEDURE myproc(inTable IN OUT TY_TBL,
count IN NUMBER,
outTable IN OUT TY_TBL
);
CREATE OR REPLACE PACKAGE BODY mypackage AS
PROCEDURE myproc(inTable IN OUT TY_TBL,
count IN NUMBER,
outTable IN OUT TY_TBL
) as
--proc body
为了访问作为记录表的 proc 的 out 变量,我将数组描述符创建为
ArrayDescriptor myDescp = ArrayDescriptor.createDescriptor ("TY_TBL", l_con);
但是由于 TY_TBL 是在包内定义的,因此它会引发错误。请帮助我如何从我的 java 代码中访问这种类型。