文档解释
ORA-30965: fragment does not fit into the VARCHAR2 VALUE column
Cause: The fragment size exceeded the max size.
Action: Re-create the XML Index with values stored in CLOB.
============================================================================
ORA-30965:片段不适合VARCHAR2 VALUE列
错误说明
发生ORA-30965错误是由于片段无法放入受限的VARCHAR2列,表示传入的片段长度超过了VARCHAR2列的最大长度限制。 ORACLE中的VARCHAR2类型的最大长度为4000字节(英文4000字符)。
常见案例
假设您有一个表MYTABLE,它有一个列COLA,该列是VARCHAR2类型,其最大宽度为50个字符,而您尝试插入一个长度超过50字符的字符串,就会发生ORA-30965错误。
解决方法
解决ORA-30965,您应该尝试更改VARCHAR2列的宽度以容纳传入的内容,或者限制您传入VARCHAR2列的内容,将其限制在VARCHAR2列允许的最大长度。
要更改VARCHAR2列的宽度,您需要使用αLTER TABLE语句:
ALTER TABLE MYTABLE MODIFY COLA VARCHAR2 (100);
上述语句将VARCHAR2列的宽度从50更改为100。
您无法更改VARCHAR2列的最大宽度超过4000字节,因此如果您正在尝试将VARCHAR2列的大小从4000字节以下更改为大于4000字节,您将收到ORA-01440错误,如以下示例所示:
ALTER TABLE MYTABLE MODIFY COLA VARCHAR2 (4001);
ORA-1440:列大小●●●超过最大值(4000 字节)
因此,使用VARCHAR2列时,您应该牢记这一长度限制,并限制您传入VARCHAR2列的最大长度,以避免ORA-30965错误。