您是否尝试过使用[email protected](....)
但你可能想要得到某种远程CLOB的校验和,看他们是否得到一个字符集转换时他们从任何原始的外部来源插入/更新。也就是说,如果客户端字符集在插入完成时与数据库字符集不同,那么在进行选择之前可能已经发生了问题。
编辑添加。
我可以想出最接近的链接另一端需要一些对象。 首先是一个在远端进行转换的函数。其次是一个呈现数据“BLOB”视图的视图。 这使用一个虚拟表(基于v $ sql,因为它是我能找到的第一个CLOB)。没有理由我可以看到你不能简单地将CLOB作为参数传递给函数。
create or replace function ret_blob return blob is
cursor c_1 is
select sql_fulltext, sql_id, length(sql_fulltext)
from v_sql
where sql_id = 'bzmb01whp36wt';
rec_c1 c_1%rowtype;
--
v_blob blob;
v_dest number := 1;
v_src number := 1;
v_lang number := 0;
v_warn number;
--
begin
open c_1;
fetch c_1 into rec_c1;
close c_1;
dbms_lob.createtemporary(v_blob, TRUE);
--
dbms_lob.CONVERTTOBLOB (v_blob, rec_c1.sql_fulltext, DBMS_LOB.LOBMAXSIZE,
v_dest, v_src, DBMS_LOB.DEFAULT_CSID, v_lang, v_warn);
--
dbms_output.put_line(':'||v_warn||'>'||length(v_blob));
--
return v_blob;
end;
/
create view rblob as select ret_blob from dual;
然后,从本地数据库,做一个
create table t as select ret_blob from [email protected]
嗨加里, 不,如果我使用我的客户端的功能(即使与@dblinkname)我仍然得到一个ORA-22992 :( 我认为你唯一的东西可以使用LOBS over dblinks做插入/选择。 远程系统上的文件很好:( 我讨厌当你必须为别人过去的错误决定付费时(二进制文件作为clobs ...) – andrecarlucci 2010-08-05 13:00:47
最后,我设法在远程端创建了一个视图,该视图将clob转换为仍然在远程端的blob,然后我可以随时使用本地数据库中的insert/select。它工作正常! – andrecarlucci 2010-08-12 18:30:41