ORA-01704:使用长UTF-8字符集的字符串文字太长

时间:2014-04-25 11:03:46

标签: oracle utf-8 plsql

我正在测试最近转换的数据库为UTF-8。如果我使用长的随机UTF-8字符插入varchar2字段(4000个字符),我得到: [ORA-01704:使用长UTF-8字符集的字符串文字太长]

如果我将字符串剪切为大约3600个字符,则可以正常工作。是什么赋予了?有没有办法插入我的4000个字符?

请注意,字符串中有一些非常奇怪的字符。

感谢。

3 个答案:

答案 0 :(得分:1)

单个UTF-8字符长度可超过1个字节。 Oracle的限制为4000字节。因此,少于4000个UTF-8字符将适合4000个字符长度的列。

答案 1 :(得分:1)

From the documentation

  

独立于字符的最大长度,VARCHAR2数据的长度不能超过4000字节。

因此,声明为varchar2(4000 [char])的字段可以容纳4000个单字节字符,或者包含较少数量的多字节字符。你不能解决这个问题,至少到12c时varchar2支持最多32k。

如果确实需要在11g或更早版本中允许4000个多字节字符,则需要将列创建为CLOB,这可以容纳数十亿字节的数据。 (您可能也希望read more on LOB storage。)

答案 2 :(得分:0)

  

更好的将列的数据类型更改为clob