【问题标题】:varchar2 4000 bytes limiting data append in a viewvarchar2 4000 字节限制数据附加在视图中
【发布时间】:2018-01-12 02:31:47
【问题描述】:

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

有什么办法可以解决这个问题。

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

如果有其他出路,请告诉我。

【问题讨论】:

    标签: oracle12c


    【解决方案1】:

    您可以将值分配给中间表中的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 组合它们。

    【讨论】:

    • 为什么不能使用扩展类型?
    • @BobC 这就是问题2中添加的子句)我不能使用扩展数据类型。
    • 我意识到这一点。但我在问为什么你不能?
    猜你喜欢
    • 1970-01-01
    • 2019-12-23
    • 2013-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多