2010-08-29 27 views

Trả lời

5

Câu trả lời là đúng trong một bối cảnh nhất định, ví câu SELECT đơn giản qua một liên kết DB, bạn sẽ nhận được lỗi này:

ORA-22992: cannot use LOB locators selected from remote tables.

Từ hướng dẫn lỗi:

Cause: A remote LOB column cannot be referenced.
Action: Remove references to LOBs in remote tables.

Tôi cũng gặp khó khăn khi tìm tài liệu dứt khoát về vấn đề này ... nhưng chúng tôi chỉ gặp phải vấn đề tương tự trong kho dữ liệu của mình. Tuy nhiên, có một số công việc xung quanh có sẵn, ví dụ: pulling the data over or creating a view.

+0

nhờ các liên kết! – Moeb

1

Tôi đã gặp rắc rối tương tự ngày hôm qua. Đây là giải pháp của tôi: tạo ra một cái nhìn romote trên bảng romote, khi đến các CLOB cols, sử dụng to_char(), chẳng hạn như to_char (col2). Sau đó, bạn có thể chọn dữ liệu từ chế độ xem. Nó có thể không phải là một giải pháp tốt, nhưng nó hoạt động.

1

Nếu cả các chương trình DB là trong trường hợp Oracle tương tự, bạn có thể sử dụng workaround sau:

select (select <columnName> from dual) <columnName> from <table>@<link>

này sẽ đưa bạn trở giống như nếu bạn muốn truy cập vào một cột LOB địa phương.

+0

vì một số lý do lạ, nó không hoạt động trong một khung nhìn, nhưng dẫn đến một giải pháp trong trường hợp của tôi. Cảm ơn! – CsBalazsHungary

0

@ Peter Ilfrich: Không đó ném một ngoại lệ khi cố gắng truy cập vào bất kỳ CLOBs hơn 4000 byte ?

Điều này được thêm một chút, nhưng điều đó có nghĩa là bạn có thể kéo lại một cách an toàn những chiếc áo choàng nhỏ (< 4000) qua một lỗ hổng.

select [email protected]<link>((select <columnName> from [email protected]<link>), 4000, 1) 
    from <table>@<link> 
where [email protected]<link>((select <columnName> from [email protected]<link>)) <= 4000; 

Đọc một CLOB (hoặc một BLOB) trên một dblink thể với gói PL/SQL này:
https://github.com/HowdPrescott/Lob_Over_DBLink

Các vấn đề liên quan