Tôi đã từng gặp vấn đề tương tự trong quá khứ. Sau đó, tôi đi đến kết luận rằng về cơ bản các liên kết db của Oracle bị "hỏng" đối với bất kỳ thứ gì ngoại trừ các kiểu SQL đơn giản (đặc biệt là của UDT, CLOBS có thể có vấn đề, XMLType cũng có thể). Nếu bạn có thể làm cho giải pháp OID hoạt động thì chúc bạn may mắn.
Giải pháp mà tôi sử dụng là sử dụng thủ tục được lưu trữ trên Java, thay vì liên kết DB.
Đặc điểm của Thủ tục được lưu trữ trong Java:
- Có thể trả về "tập hợp nhiều kiểu", chỉ về tất cả các kiểu phức tạp (UDT, bảng / mảng / varrays) xem Tài liệu trực tuyến của Oracle để biết chi tiết. Oracle thực hiện công việc sắp xếp phức tạp (hoặc phong phú) từ java tốt hơn nhiều so với từ DBLink.
- Java được lưu trữ có thể có được "kết nối mặc định" (chạy trong cùng một phiên với kết nối SQL tới db - không có vấn đề xác thực).
- Java được lưu trữ gọi proc PL / SQL trên DB từ xa và lớp java JDBC thực hiện việc sắp xếp từ DB từ xa.
- Java được lưu trữ sẽ đóng gói kết quả và trả kết quả về lớp SQL hoặc PL / SQL.
Đó là một chút công việc, nhưng nếu bạn có một chút java, bạn sẽ có thể "cắt và dán" một giải pháp lại với nhau từ tài liệu và mẫu Oracle.
Tôi hy vọng điều này sẽ hữu ích.