【问题标题】:ORA-01489 - Result of string concatenation is too long - Append big Varchar columnsORA-01489 - 字符串连接的结果太长 - 附加大 Varchar 列
【发布时间】:2020-05-12 17:06:26
【问题描述】:

我正在尝试追加 4 列数据类型,例如 varchar2(4000) || varchar2(4000) || varchar2(4000) || varchar2(100) 并尝试将其分配给表的 CLOB 数据类型列。

如下所示,

insert into test as select TO_CLOB (A || B || C  || D) as final from test_a;

表 1:测试

A CLOB;

表 2:Test_a

A varchar2(4000) 

B varchar2(4000) 

C varchar2(4000) 

C varchar2(100) 

我得到的错误是ORA-01489 Result of string concatenation is too long

我也尝试过像下面这样单独进行 CLOB 转换,但执行时间太长。

insert into test 
as select TO_CLOB (A )  || TO_CLOB (B ) || TO_CLOB (C ) || TO_CLOB (D ) ) as final from test_a;

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

附:我正在使用Oracle 12c version

【问题讨论】:

    标签: oracle plsql append oracle12c clob


    【解决方案1】:

    当 || 的参数之一发生时,会发生对 clob 的隐式转换。是一个 clob,所以请尝试以下操作:

    原始查询:

    select rpad('0', 4000, '0')||rpad('0', 4000, '0')||rpad('0', 4000, '0')||rpad('0', 4000, '0')||rpad('0', 100, '0') from dual
    ORA-01489: result of string concatenation is too long
    

    连接的第一个成员中的TO_CLOB:

    select TO_CLOB(rpad('0', 4000, '0'))||rpad('0', 4000, '0')||rpad('0', 4000, '0')||rpad('0', 4000, '0')||rpad('0', 100, '0') from dual
    1 row(s) selected
    

    【讨论】:

      【解决方案2】:

      您可以使用DBMS_LOB.writeappend 插入 CLOB,例如如下所示

          declare       
          l_clob clob := '12345';     
          A varchar2(4000):=lpad('A',4000,'A');       
          B varchar2(4000):=lpad('B',4000,'B');     
          C varchar2(4000):=lpad('C',4000,'C');      
          begin       
          dbms_lob.writeappend( l_clob, length(A), A );        
          dbms_lob.writeappend( l_clob, length(B), B );        
          dbms_lob.writeappend( l_clob, length(C), C );       
          insert into test_clob values(l_clob);
          end;
      

      【讨论】:

        猜你喜欢
        • 2017-02-06
        • 2011-08-13
        • 2016-05-28
        • 2013-04-04
        • 1970-01-01
        • 2015-06-28
        • 2012-05-12
        • 1970-01-01
        • 2013-01-29
        相关资源
        最近更新 更多