Oracle ORA-01489-字符串连接的结果太长-追加大Varchar列

Oracle ORA-01489-字符串连接的结果太长-追加大Varchar列,oracle,plsql,append,oracle12c,clob,Oracle,Plsql,Append,Oracle12c,Clob,我尝试附加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:试验a A varchar2(4000) B varchar2(4000) C va

我尝试附加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:试验a

A varchar2(4000) 

B varchar2(4000) 

C varchar2(4000) 

C varchar2(100) 
我得到的错误是
ORA-01489字符串连接的结果太长

我也尝试过像下面这样进行单独的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版本

    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;

当| |的一个参数是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
要在连接的第一个成员中添加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