2014-07-18 273 views
1

我有一個varchar2(16000字符)列,對於真正的長文本。我可以在此列中插入超過4000個字符文本,但是當我嘗試通過sqldeveloper選擇它時,我得到一個ORA-24920錯誤。如果我從查詢中跳過該列,則會返回一些數據,如果檢查了列的長度,則會返回插入文本的正確長度。ORA-24920但文本短於列大小

問題是,似乎sqldeveloper無法處理這個長文本。任何想法?

+0

文本可以用UTF8嗎?這可能會告訴你〜4000個字符,但它會比ascii 4k字符多得多。 – paqogomez

+0

但是怎麼會發生這種情況,即使文本是UTF8,我可以在數據庫中插入長文本,但無法查詢該文本?我認爲這是一些sqldeveloper首選項問題,但我找不到應該在哪裏更改某些內容... – maestro

+0

對不起,我誤解了你的問題。你能夠成功插入正確的?但是您在查詢插入的值時遇到問題? – paqogomez

回答

3

除非您使用的是Oracle 12c,否則SQL表在VARCHAR2上的限制爲4000個字符。

這有點令人困惑,因爲PL/SQL變量具有32k的VARCHAR2限制,這意味着您可以在過程中聲明一個VARCHAR2(16000)變量並讓它嘗試插入表中,該表只要數據低於SQL限制。

在Oracle 12c中,VARCHAR2的SQL表限制已擴展到32k,以匹配PL/SQL限制(hooray!)。

如果您的數據庫版本已經是12c,那麼您需要將您的SQL Developer升級到最新版本,see here.顯然,舊版本無法處理擴展的SQL VARCHAR2限制,並會給您提供錯誤信息。

+0

我問我們的管理員我們的數據庫,他們說它實際上是12c。我的sqldeveloper版本是4.0.2.15這是最新的afaik。任何想法? – maestro

+0

您的版本不支持選擇4k以上的任何內容。 https://apex.oracle.com/pls/apex/f?p=43135:7:0::NO::P7_ID:39941 – Sun

+0

我不認爲還有什麼我們可以告訴你的。所有的跡象都指向你的堆棧中不支持12c的地方。只是踢,運行以下查詢 - 選擇*從V $ VERSION; 。這將告訴你數據庫是什麼版本,但是如果你能夠創建一個VARCHAR2大小超過4k的表,那麼IDE似乎是問題而不是數據庫。 –

相關問題