斷點

          每天進步一點點!
          posts - 174, comments - 56, trackbacks - 0, articles - 21

          ORA-01461: 僅可以為插入 LONG 列的 LONG 值賦值

          Posted on 2010-01-14 21:48 斷點 閱讀(403) 評論(0)  編輯  收藏 所屬分類: Oracle
          Caused by: java.sql.BatchUpdateException: ORA-01461: 僅可以為插入 LONG 列的 LONG 值賦值
          我在系統(tǒng)的一個頁面上加載一個.xml文件時,出現(xiàn)了這個錯誤。

          原因:

          當插入數(shù)據(jù)的長度在1000、2000內(nèi),就會拋出這樣的錯誤。


          解決方法:

          思路:將存儲的字符串補上空格,讓其超過2000的長度即可,但僅限與緊急解決問題。
          1、首先在.java文件中引入import org.apache.commons.lang.StringUtils;
          2、在此.java文件的相應的方法里添加如下判斷:

              // 處理ora-1461問題(clob長度在1000-2000之間會出錯)
                  if (xml.length() >= 1000 && xml.length() <= 2000) {
                      xml = StringUtils.rightPad(xml, 2008);
                  }

           

          相關知識:

          LONG: 可變長的字符串數(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來說是只讀的,也不參與事務性控制和數(shù)據(jù)恢復。
          其中CLOB,NCLOB,BLOB都是內(nèi)部的LOB(Large Object)類型,最長4G,沒有LONG只能有一列的限制。要保存圖片、文本文件、Word文件各自最好采用那種數(shù)據(jù)類型呢?BLOB最好,LONG RAW也不錯,但Long是oracle將要廢棄的類型,因此建議用BLOB。

          相關鏈接:http://www.aygfsteel.com/allen-zhe/archive/2008/05/06/198627.html


          posted @ 2009-04-18 13:01 斷點 閱讀(676) | 評論 (0)
          主站蜘蛛池模板: 台南市| 千阳县| 江门市| 泾川县| 朝阳区| 高密市| 开鲁县| 阳东县| 平顶山市| 抚顺县| 宜州市| 富源县| 吴桥县| 大丰市| 深圳市| 息烽县| 宁明县| 济南市| 宁远县| 万年县| 永修县| 桦甸市| 泽普县| 定州市| 册亨县| 化州市| 蓬溪县| 义乌市| 错那县| 柳州市| 天台县| 延边| 临高县| 五大连池市| 临武县| 江城| 奉节县| 巍山| 苏尼特右旗| 北流市| 华池县|