我有一个视图,从多行获取数据并附加到单个列。问题是当长度超过4000字节时,由于varchar限制而导致错误(ORA-01489:字符串连接的结果太长)。
有没有办法解决这个问题。
1)我试图将其转换为clob,但运行了几个小时。 2)我不能使用扩展数据类型。
如果还有其他方法,请告诉我。
答案 0 :(得分:0)
您可以只将值分配给中间表中的clob
列,而不是转换为clob
列。
例如:
create table e1(c1 varchar2(4000), c2 varchar2(4000), c3 varchar2(4000));
insert into e1 values(rpad('a',4000,'a'),rpad('b',4000,'b'),rpad('c',4000,'c'));
insert into e1 values(rpad('d',4000,'d'),rpad('e',4000,'e'),rpad('f',4000,'f'));
insert into e1 values(rpad('g',4000,'g'),rpad('h',4000,'i'),rpad('j',4000,'j'));
insert into e1 values(rpad('k',4000,'k'),rpad('l',4000,'l'),rpad('m',4000,'m'));
commit;
create table e2(c4 clob);
insert into e2(c4) select c1||' '||c2||' '||c3 from e1;
commit;
select * from e2;
以下列出输出:
SQL> select * from e2;
C4
--------------------------------------------------------------------------------
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
gggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg
SQL>
或者,如果要求只是显示多个列的内容,您可以使用上面使用的append组合它们。