oracle long raw long 类型区别,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類型字段,插入大文本

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值