我有一个varchar2(16000 char)列,用于非常长的文本。我可以在此列中插入超过4000个char文本,但是当我尝试通过sqldeveloper选择它时,我收到一个ORA-24920错误。如果我从查询中跳过该列,我会收到一些数据,如果我检查列的长度,则会返回插入文本的正确长度。
问题是,似乎sqldeveloper无法处理这个长文本。有什么想法吗?
答案 0 :(得分:3)
除非您使用的是Oracle 12c,否则SQL表在VARCHAR2上的限制为4000个字符。
这有点令人困惑,因为PL / SQL变量的VARCHAR2限制为32k,这意味着你可以在一个过程中声明一个VARCHAR2(16000)变量并让它尝试插入一个只要数据低于SQL限制。
在Oracle 12c中,如果MAX_STRING_SIZE属性设置为EXTENDED,则VARCHAR2的SQL表限制可以扩展到32k。
如果你的数据库版本已经是12c,那么你需要将SQL Developer升级到最新版本,see here.显然旧版本无法处理扩展的SQL VARCHAR2限制并且会给你错误& #39;重新看到。