问题描述
我在Oracle数据库中有2个表,我要更新的其中一个表在另一个使用dblink连接的数据库上。在我的表中,有两列类型为CLOB的列。我在一个数据库中编写了一个触发器,该触发器应将新的CLOB列的值更新为远程数据库上的远程表。当我想更新Clob列时,出现以下错误:
sql错误:ORA-02055:分布式更新操作失败;需要回滚 ORA-22992:无法使用从远程表中选择的LOB定位器 ORA-04088:执行触发器'SPECTRA.REPORT_UPDATE'时出错 02055. 00000-“分布式更新操作失败;需要回滚” *原因:分布式更新操作期间的故障可能没有 回滚该操作的所有效果。以来 一些网站可能不一致,交易必须回滚到 保存点或全部 *操作:回滚到保存点或回滚事务并重新提交
如何更新远程数据库中的CLOB列的值?
解决方法
您是否尝试过使用DBMS_LOB软件包?即功能
DBMS_LOB.COPY (
dest_lob IN OUT NOCOPY BLOB,src_lob IN BLOB,amount IN INTEGER,dest_offset IN INTEGER := 1,src_offset IN INTEGER := 1);
或
DBMS_LOB.COPY (
dest_lob IN OUT NOCOPY CLOB CHARACTER SET ANY_CS,src_lob IN CLOB CHARACTER SET dest_lob%CHARSET,src_offset IN INTEGER := 1);
https://docs.oracle.com/cd/B28359_01/appdev.111/b28419/d_lob.htm#i997674
或粘贴您的代码...