【发布时间】:2018-01-12 02:31:47
【问题描述】:
我有一个从多行获取数据并附加到单个列的视图。问题是当长度超过 4000 字节时,由于 varchar 限制会给出错误(ORA-01489:字符串连接的结果太长)。
有什么办法可以解决这个问题。
1) 我尝试将其转换为 clob,但运行了几个小时。 2) 我不能使用扩展数据类型。
如果有其他出路,请告诉我。
【问题讨论】:
标签: oracle12c
我有一个从多行获取数据并附加到单个列的视图。问题是当长度超过 4000 字节时,由于 varchar 限制会给出错误(ORA-01489:字符串连接的结果太长)。
有什么办法可以解决这个问题。
1) 我尝试将其转换为 clob,但运行了几个小时。 2) 我不能使用扩展数据类型。
如果有其他出路,请告诉我。
【问题讨论】:
标签: oracle12c
您可以将值分配给中间表中的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 组合它们。
【讨论】: