簡體   English   中英

如何在觸發器中使用 dblink 將 CLOB 列從一個表更新到另一個表?

[英]How to update CLOB column from a table to another table using dblink in a trigger?

我在 Oracle 數據庫中有 2 個表,其中一個我要更新的表位於使用 dblink 連接的另一個數據庫上。 在我的表中有兩列 CLOB 類型。 我正在一個數據庫中編寫一個觸發器,該觸發器應該將新的 CLOB 列的值更新到遠程數據庫上的遠程表。 當我想更新 Clob 列時,出現以下錯誤:

SQL 錯誤:ORA-02055:分布式更新操作失敗; 需要回滾 ORA-22992:無法使用從遠程表中選擇的 LOB 定位器 ORA-04088:執行觸發器 'SPECTRA.REPORT_UPDATE' 02055 期間出錯。00000 - “分布式更新操作失敗;需要回滾” *原因:分布式更新操作期間失敗可能沒有回滾操作的所有效果。 由於某些站點可能不一致,事務必須回滾到保存點或完全 *Action:回滾到保存點或回滾事務並重新提交

如何更新遠程數據庫中 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,
  amount      IN            INTEGER,
  dest_offset IN            INTEGER := 1,
  src_offset  IN            INTEGER := 1);

https://docs.oracle.com/cd/B28359_01/appdev.111/b28419/d_lob.htm#i997674

或者粘貼你的代碼...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM