
# 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;
```
