oracle裏面的long,long raw,raw,clob,blob區別

ORACLE LOB類型提供了BFILE、BLOB、CLOB、NCLOB讓我們來存儲最大尺寸有4G的無結構的數據塊(例如:文本、圖像、聲音和視頻等)。並且它們右以以高效的、任意的和分段操作的方式存取數據。

    LOB類型在很多方面和LONG和LONG RAW不同,例如,除了NCLOB以外LOB可以被看作對象類型,但是LONG不行。LOB的最大尺寸爲4G,但LONg的最大尺寸只有2GB。同時LOB支持隨機存取數據,但是LONG中支持順序存取。
    LOB類型存儲LOB定位器,它指向一個存儲在外部文件的大型對象,PL/SQL通過定位器來操作LOBs。從Oracle9i開始,我們可以將CLOBs轉換成CHAR和VARCHAR2,反之亦然。可以使用包DBMS_LOB來對LOB型進行讀寫的進行分段操作。

oracle裏面的long,long raw,raw,clob,blob區別: 用clob和blob比較好
clob,blob 此數據類型用於存儲非結構化二進制數據。
RAW此數據類型用於存儲不是由 Oracle 解釋的二進制數據
long 類型存儲的內容不能被修改

LONG數據類型使用上的一些說明
         在編寫應用時,需要大量的插入大文本,但是oracle 的clob操作起來比較繁瑣,應此我沒有選擇使用clob,而是使用了oracle以前版本中的long類型[但是long類型有一些限制,在一個表中只能有一個long字段]。
開始的時候我直接使用insert into table1 values(a,b[long])的方式插入數據庫,但是oracle有些限制一條語句不能超過4000個字符,並報ORA-01704的錯誤。
經過查找oracle 的文檔找到了解決的方法,就是對於long的字段使用setCharacterStream()方法將String插入數據庫。

代碼:
sql="insert into msg_info values (?,?,?,?[long類型字段],'C',sysdate,sysdate+"+msgterm+",?)";
pstat1 = conn.prepareStatement(sql);
pstat1.setLong(1, msg_id);
      pstat1.setInt(2, msg_gp_id);
      pstat1.setString(3, msg_title);
      pstat1.setCharacterStream(4,new StringReader(msg_info.toString()),msg_info.length());
conn.commit();
      pstat1.setLong(5, this.upid);

  • 使用說明:
    • 1、LONG 數據類型中存儲的是可變長字符串,最大長度限制是2GB。

      2、對於超出一定長度的文本,基本只能用LONG類型來存儲,數據字典中很多對象的定義就是用LONG來存儲的。

      3、LONG類型主要用於不需要作字符串搜索的長串數據,如果要進行字符搜索就要用varchar2類型。

      4、很多工具,包括SQL*Plus,處理LONG 數據類型都是很困難的。

      5、LONG 數據類型的使用中,要受限於磁盤的大小。
  • 能夠操作 LONG 的 SQL 語句:
    • 1、Select語句

      2、Update語句中的SET語句

      3、Insert語句中的VALUES語句
  • 限制:
    • 1、一個表中只能包含一個 LONG 類型的列。 2、不能索引LONG類型列。 3、不能將含有LONG類型列的表作聚簇。 4、不能在SQL*Plus中將LONG類型列的數值插入到另一個表格中,如insert into ...select。 5、不能在SQL*Plus中通過查詢其他表的方式來創建LONG類型列,如create table as select。 6、不能對LONG類型列加約束條件(NULL、NOT NULL、DEFAULT除外),如:關鍵字列(PRIMARY KEY)不能是 LONG 數據類型。 7、LONG類型列不能用在Select的以下子句中:where、group by、order by,以及帶有distinct的select語句中。 8、LONG類型列不能用於分佈查詢。 9、PL/SQL過程塊的變量不能定義爲LONG類型。 10、LONG類型列不能被SQL函數所改變,如:substr、instr。
  • SQL*Plus 中操作 LONG類型列:
    • 1、set long n

      2、col 列名 format An

      n代表n位字符(n爲大於零的整數),An表示將此列的數據顯示寬度限制爲不超過n位。

    利用oracle long類型字段,插入大文本
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章