【问题标题】:Oracle: Update CLOB form another table that is bigger than 4000 charactersOracle:从另一个大于 4000 个字符的表中更新 CLOB
【发布时间】:2012-11-14 18:26:08
【问题描述】:

我该怎么做?

UPDATE 
    My_Table SET my_clob = (
        SELECT 
            other_clob
        FROM 
            other_table
        WHERE 
            my_table.id = other_table.id
    );

错误:

ORA-22835:缓冲区太小,无法进行 CLOB 到 CHAR 或 BLOB 到 RAW 的转换

编辑:

天哪,伙计们。我发现该列实际上是我正在测试的测试系统中的一个 varchar(4000)(在 prod 中它应该是一个 clob)。有点让你怀疑我是不是第一个真正使用测试系统的人......

【问题讨论】:

  • 您尝试过使用 DBMS_LOB.SUBSTR 吗?

标签: sql oracle sql-update clob


【解决方案1】:

据称这是fixed in oracle 10.2。它当然适用于oracle 11g R2

如果无法升级,请尝试使用一些 PL/SQL:

begin
  for rec in (select id, other_clob from other_table) loop
    update my_table set my_clob = rec.other_clob where id = rec.id;
  end loop;
end;
/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-13
    • 2018-07-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 2021-08-01
    • 1970-01-01
    相关资源
    最近更新 更多