Error : ORA-01704: string literal too long

后端 未结 4 819
梦毁少年i
梦毁少年i 2020-11-29 06:58

While I try to set the value of over 4000 characters on a field that has data type CLOB, it gives me this error :

ORA-01704: string lite

相关标签:
4条回答
  • 2020-11-29 07:38

    The split work until 4000 chars depending on the characters that you are inserting. If you are inserting special characters it can fail. The only secure way is to declare a variable.

    0 讨论(0)
  • 2020-11-29 07:49

    Try to split the characters into multiple chunks like the query below and try:

    Insert into table (clob_column) values ( to_clob( 'chunk 1' ) || to_clob( 'chunk 2' ) );
    

    It worked for me.

    0 讨论(0)
  • 2020-11-29 07:50

    To solve this issue on my side, I had to use a combo of what was already proposed there

    DECLARE
      chunk1 CLOB; chunk2 CLOB; chunk3 CLOB;
    BEGIN
      chunk1 := 'very long literal part 1';
      chunk2 := 'very long literal part 2';
      chunk3 := 'very long literal part 3';
    
      INSERT INTO table (MY_CLOB)
      SELECT ( chunk1 || chunk2 || chunk3 ) FROM dual;
    END;
    

    Hope this helps.

    0 讨论(0)
  • 2020-11-29 07:57

    What are you using when operate with CLOB?

    In all events you can do it with PL/SQL

    DECLARE
      str varchar2(32767);
    BEGIN
      str := 'Very-very-...-very-very-very-very-very-very long string value';
      update t1 set col1 = str;
    END;
    /
    

    Proof link on SQLFiddle

    0 讨论(0)
提交回复
热议问题