オラクルでの私の手順は、レコードテーブルの in および out パラメータを持つパッケージの下で定義されています。Java の callable ステートメントを使用して、packagename.procname を使用してプロシージャを呼び出すことができます。ただし、out パラメーターにアクセスするには、ARRAY 型の変数を定義する必要があります。ただし、オラクルのレコードのタイプとレコードのテーブルは、パッケージ内で定義されています。したがって、これらの型は、ARRAYDESCRIPTOR を使用して Java からアクセスすることはできません。
プロシージャとタイプは次のように定義されています。
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 コードからこの型にアクセスする方法を教えてください。