次のように、varchar2の型テーブルをJavaにマップすることができました。
-
PLSQLパッケージの外部に新しいタイプを作成し、必要な権限を付与します。
CREATE OR REPLACE TYPE STRARRAY AS TABLE OF VARCHAR2 (100); / GRANT all ON MYSCHEMA.STRARRAY TO MYUSER1; / commit;
-
strarrayを受け入れる/返すPLSQL関数を作成します。これはパッケージ仕様で宣言され、パッケージ本体に完全に記述されています。配列をINOUTとして宣言しましたが、私の実装では、実際にはPLSQL呼び出しからの出力のみを使用します。
PROCEDURE getArr(arr_var IN OUT strarray) IS counter NUMBER := 1; BEGIN arr_var := new strarray(); WHILE counter <= 10 LOOP arr_var.extend(); arr_var(counter) := 'my data string'; END LOOP; END getArr;
-
Javaでプロシージャを呼び出します。この例では、変数connはデータ型Connectionであり、すでに初期化されています。 Oracleデータベースに対してjdbcシンクライアントを実行しています。
CallableStatement proc = null; String sql = "{ call myPackage.getArr(?) }"; try{ proc = conn.prepareCall(sql); proc.registerOutParameter(1, OracleTypes.Array, "MYSCHEMA.STRARRAY"); proc.execute(); Array arrOut = proc.getArray(1); for (int num=0; num<10; num++){ System.out.println(arrOut[num]); }finally{ proc.close(); }