错误:ORA-01704:字符串文字太长

问题描述 投票:30回答:4

虽然我尝试在具有数据类型CLOB的字段上设置超过4000个字符的值,但它给了我这个错误:

ORA-01704:字符串文字太长。

[任何建议,如果我必须设置无限制字符的值,哪种数据类型将对我适用,尽管就我而言,它恰好是15000个字符。

注意:我要存储的长字符串是用ANSI编码的。

oracle codeigniter clob nclob
4个回答
46
投票

使用CLOB时使用的是什么?

在所有情况下,您都可以使用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


24
投票

[尝试像下面的查询一样将字符分成多个块,然后尝试:

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

对我有用。


2
投票

根据您要插入的字符,拆分工作直到4000个字符。如果要插入特殊字符,则可能会失败。唯一安全的方法是声明变量。


0
投票

为了解决我这一方面的问题,我不得不使用那里已经提出的组合

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;

希望这会有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.