Oracle:从另一个大于4000个字符的表更新CLOB

时间:2012-11-27 07:06:50

标签: sql oracle sql-update clob

我该怎么做?

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)。有点让你想知道我是否是第一个真正使用测试系统的人......

1 个答案:

答案 0 :(得分:0)

据称这是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;
/