Tôi đã có thể ánh xạ một bảng loại varchar2 sang java như sau:
-
Tạo một kiểu mới bên ngoài bất kỳ gói PLSQL nào và cấp các quyền cần thiết.
CREATE OR REPLACE TYPE STRARRAY AS TABLE OF VARCHAR2 (100); / GRANT all ON MYSCHEMA.STRARRAY TO MYUSER1; / commit;
-
Tạo một hàm PLSQL chấp nhận / trả về strarray. Điều này đã được khai báo trong đặc tả gói và được viết đầy đủ trong phần thân gói. Mặc dù tôi đã khai báo mảng là IN OUT, trong quá trình triển khai, tôi chỉ thực sự sử dụng đầu ra từ lệnh gọi 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;
-
Gọi thủ tục trong java. Trong ví dụ này, biến conn có kiểu dữ liệu là Kết nối và đã được khởi tạo. Tôi đang chạy một ứng dụng mỏng jdbc dựa trên cơ sở dữ liệu Oracle.
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(); }