以前寫過的一篇博文中提到了出現“ORA-01461: 僅可以為插入 LONG 列的 LONG 值賦值”的原因,并給出了原因和解決方法,在這裡回顧一下。(詳見 當遇到“數據大小超出此類型的最大值”和“僅可以為插入 LONG 列的 LONG 值賦值”時...? )當時的環境:?數據庫:Oracle 9i數據庫字段類型:varchar2(4000)輸入漢字:大于1000字原因:?? 我的數據庫字符集應該是UTF-8的,對于UTF-8或歐洲的某些字符集,oracle在存儲時,對于一個字符需要2個或3個字節的存儲空間,雖然表定義中為varchar2(4000),但是其實該字段的data_length為其2倍或3倍長。這種情況下oracle會把data_length長度超過4000的當做LONG型處理,你的表中有兩個這樣的字段,插入數據時相當于同時操作2個LONG字段,所以報錯。
當時的解決辦法:建議減小字段長度或拆分。實在需要的,可以轉而采用CLOB字段類型。 現在的環境:
生存或毀滅,這是個必答之問題:是否應默默的忍受坎苛命運之無情打擊,還是應與深如大海之無涯苦難奮然為敵,并將其克服。此二抉擇,究竟是哪個較崇高?