暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 将CLOB转换为长 :(

ASKTOM 2021-05-19
543

问题描述

大家好,首先感谢您提供的所有支持,这是一流的,非常感谢 :)

有一种情况,有些柱子从LONG via过早地转换为CLOB
alter table 修改 CLOB;

而且他们需要 (在短时间内) 转换为LONGs。有些blob的长度超过32k,但数量不多,我想知道最好的方法是使列定义变回很长。希望有一些我不熟悉的魔术,但是假设这种数据类型已经被弃用了很长时间,我担心没有。

非常感谢!

drop table READY_FIRE_AIM ;
create table READY_FIRE_AIM (col1 number, LONG_COLUMN clob);

declare
    l_large_value_1   clob    :=  rpad ('1',32750, '2');
    l_large_value_2   clob    :=  rpad ('2',32750, '2');
begin
    insert into READY_FIRE_AIM values (1, l_large_value_1 );
    insert into READY_FIRE_AIM values (2, l_large_value_1 || l_large_value_2 );
    commit;
end;
/

select col1, dbms_lob.getlength(long_column) from READY_FIRE_AIM;
复制


专家解答

从备份中恢复表。

你们... 确实有备份可以恢复,对吗?

如果出于某种原因这不是一个选择,我认为您可能对> 32k的字符串不走运。您可以从CLOB -> LONG复制数据,以获得比这更短的值,但较长的值将达到ORA-22835: 缓冲区太小,CLOB无法CHAR或BLOB转换为RAW。(如果未启用扩展数据类型,则限制为4,000)

我不知道有别的办法解决这个问题。
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论