Posted on 2010-01-14 21:48
斷點 閱讀(398)
評論(0) 編輯 收藏 所屬分類:
Oracle
Caused by: java.sql.BatchUpdateException: ORA-01461: 僅可以為插入 LONG 列的 LONG 值賦值
我在系統(tǒng)的一個頁面上加載一個.xml文件時,出現(xiàn)了這個錯誤。
原因:
當(dāng)插入數(shù)據(jù)的長度在1000、2000內(nèi),就會拋出這樣的錯誤。
解決方法:
思路:將存儲的字符串補上空格,讓其超過2000的長度即可,但僅限與緊急解決問題。
1、首先在.java文件中引入import org.apache.commons.lang.StringUtils;
2、在此.java文件的相應(yīng)的方法里添加如下判斷:
// 處理ora-1461問題(clob長度在1000-2000之間會出錯)
if (xml.length() >= 1000 && xml.length() <= 2000) {
xml = StringUtils.rightPad(xml, 2008);
}
相關(guān)知識:
LONG: 可變長的字符串?dāng)?shù)據(jù),最長2G,LONG具有VARCHAR2列的特性,可以存儲長文本一個表中最多一個LONG列
LONG RAW: 可變長二進制數(shù)據(jù),最長2G
CLOB: 字符大對象Clob 用來存儲單字節(jié)的字符數(shù)據(jù)
NCLOB: 用來存儲多字節(jié)的字符數(shù)據(jù)
BLOB: 用于存儲二進制數(shù)據(jù)
BFILE: 存儲在文件中的二進制數(shù)據(jù),這個文件中的數(shù)據(jù)只能被只讀訪。但該文件不包含在數(shù)據(jù)庫內(nèi)。bfile字段實際的文件存儲在文件系統(tǒng)中,字段中存儲的是文件定位指針.bfile對oracle來說是只讀的,也不參與事務(wù)性控制和數(shù)據(jù)恢復(fù)。
其中CLOB,NCLOB,BLOB都是內(nèi)部的LOB(Large Object)類型,最長4G,沒有LONG只能有一列的限制。要保存圖片、文本文件、Word文件各自最好采用那種數(shù)據(jù)類型呢?BLOB最好,LONG RAW也不錯,但Long是oracle將要廢棄的類型,因此建議用BLOB。
相關(guān)鏈接:http://www.tkk7.com/allen-zhe/archive/2008/05/06/198627.html
posted @ 2009-04-18 13:01 斷點 閱讀(676) | 評論 (0)