文档首页/ 数据库和应用迁移 UGO/ 用户指南/ 语法转换指南/ 转换错误码/ Oracle To GaussDB 转换错误码/ U0100080:无法确定列类型。检查表字段类型,若为 BLOB/CLOB 需在 DBE_LOB.LOB_WRITE 后手动添加 UPDATE 语句。
更新时间:2025-06-04 GMT+08:00
分享

U0100080:无法确定列类型。检查表字段类型,若为 BLOB/CLOB 需在 DBE_LOB.LOB_WRITE 后手动添加 UPDATE 语句。

描述

当在 Oracle 中使用 SELECT INTO FOR UPDATE 方式调用 DBE_LOB 高级包中的 append、writeappend、write、copy 等存储过程对于 BLOB/CLOB 数据类型进行写操作时,Oracle 会自动更新数据表中的 BLOB/CLOB 对象。而 GaussDB 不支持自动更新至表,需显式执行 UPDATE 语句。当 UGO 无法验证列是否为 BLOB/CLOB 数据类型时无法自动添加 UPDATE 语句,需要人工确认数据类型,当确认为 BLOB/CLOB 数据类型时,手动修改补充 UPDATE 语句。

数据库类型与版本

  • 源库类型与版本:UGO 支持的 Oracle 版本。
  • 目标库类型与版本:UGO 支持的 GaussDB 版本。

语法示例

CREATE OR REPLACE PACKAGE BODY "PICCPROD"."PKG_TRANSFER_FORMAT_TP" is

PROCEDURE p_create_dsic_10301_0004(
    i_organ_id  IN VARCHAR,
    i_bank_code IN VARCHAR,
    i_send_id   IN NUMBER,
    o_scce_flag OUT NUMBER
    )AS
    p_clob1        CLOB;
    p_offset       INTEGER:=0;
    p_info1     VARCHAR2(200);

   BEGIN

       SELECT send_text
         INTO p_clob1
         FROM t_bank_text
        WHERE send_id = i_send_id
          FOR UPDATE;

      DBMS_LOB.WRITE(p_clob1,LENGTH(p_info1),p_offset+1,p_info1);
      p_offset := p_offset + length(p_info1);

  RETURN;
END;

end PKG_TRANSFER_FORMAT_TP;
/

改造建议

对于上述示例,若确认 t_bank_text 表中的 send_text 列为 BLOB/CLOB 数据类型时,则需要在其下方补充 UPDATE 语句:

DBMS_LOB.WRITE(p_clob1,LENGTH(p_info1),p_offset+1,p_info1);

转换为

DBE_LOB.LOB_WRITE(p_clob1,LENGTH(p_info1),p_offset+1,p_info1);
UPDATE t_bank_text SET send_text = p_clob1 WHERE send_id = i_send_id;

相关文档