Ik kon als volgt een typetabel van varchar2 aan Java toewijzen:
-
Maak een nieuw type buiten elk PLSQL-pakket en verleen de nodige machtigingen.
CREATE OR REPLACE TYPE STRARRAY AS TABLE OF VARCHAR2 (100); / GRANT all ON MYSCHEMA.STRARRAY TO MYUSER1; / commit;
-
Maak een PLSQL-functie die de strarray accepteert/retourneert. Dit werd aangegeven in de pakketspecificatie en volledig geschreven in de pakkettekst. Hoewel ik heb aangegeven dat de array IN OUT is, gebruik ik in mijn implementatie alleen de uitvoer van de PLSQL-aanroep.
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;
-
Roep de procedure op in java. In dit voorbeeld is de variabele conn van het datatype Connection en is deze al geïnitialiseerd. Ik gebruik een jdbc thin client tegen een Oracle-database.
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(); }