varchar2 4000字节限制数据附加在视图中

时间:2018-01-11 12:58:29

标签: oracle12c

我有一个视图,从多行获取数据并附加到单个列。问题是当长度超过4000字节时,由于varchar限制而导致错误(ORA-01489:字符串连接的结果太长)。

有没有办法解决这个问题。

1)我试图将其转换为clob,但运行了几个小时。 2)我不能使用扩展数据类型。

如果还有其他方法,请告诉我。

1 个答案:

答案 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组合它们。