2012-12-19 27 views
21

雖然我嘗試設置在具有數據類型CLOB場超過4000個字符的價值,它給了我這個錯誤:錯誤:ORA-01704:字符串文本太長

ORA-01704:字符串字面太長。

任何建議,這要是我,雖然我的情況,它正好是約15000字符設置的字符無限值數據類型將適用於我。

注:我試圖存儲的長字符串以ANSI編碼。

回答

36

你在使用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

+0

謝謝,但CI不支持這些過程的東西http://stackoverflow.com/questions/13946641/error-this-feature-is-not-available-for-the-database-you-are-using# comment19232999_13946641 – hsuk

+0

我想你可以在程序中包裝這些代碼,並且Codeigniter可以執行它。對不起,但我沒有檢查Codeigniter。看看這裏[鏈接](http://stackoverflow.com/a/7930092/1910242) – knagaev

+0

它,但我可以定義varchar2的大小,檢查此鏈接,http://stackoverflow.com/questions/13947222/error -ora-06553-pls-306-wrong-number-or-types-of-arguments-in-call-to-procedures/13947420#13947420 – hsuk

14

嘗試,如查詢的字符轉換成多塊分割下方,並嘗試:

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

它爲我工作。

1

拆分工作直到4000個字符取決於您插入的字符。如果你插入特殊字符,它可能會失敗。 唯一可靠的方法是聲明一個變量。

相關問題