oracle大对象

在当今网络时代,我们对数据的存储是越来越高,仅仅存储小型文本数据已经远远不够了,现在数据库需要存储图片、视频等等一些多媒体的内容,因此oracle给我们提供了一种大类型数据库对象LOB(Large Object),可以用于存储大型数据。

 

一、大对象的4中数据类型

 

CLOB       字符LOB数据类型,用于存储字符数据类型

 

NCLOB     国家语言字符LOB数据类型,用于存储多字节多字符数据类型

 

BLOB       二进制LOB数据类型,用于存储二进制数据

 

BFILE      二进制FILE类型,用于存储文件指针,有时候,数据文件本身存储在数据库之外,而在数据库中之存储该文件的引用

 

 

二、大对象的优点

 

LOB与较早的类型相比,具有下面3个优点

 

1、LOB最大可以存储128TB的数据、这远远超过LONG和LONG RAW累的存储数量(2GB)

 

2、一个表可以有多个LOB、但是一个表只能有一个LONG和LONG RAW

 

3、LOB可以随机访问、LONG和LONG RAW只能顺序访问

 

三、大对象的组成部分

 

LOB主要由两部分组成

 

LOB定位器:一个指针指向LOB数据的位置

LOB数据:存储在LOB中的实际数据

 

LOB数据并不一定存储在表中,如果CLOB、BLOB、NCLOB列中的数据小于4KB则LOB数据存在于表中,否存于表外。

至于BFILE列支存储LOB定位器存在于表中。

 

四、应用

 

1、更新CLOB字段或者是往该类型字段插入数据的时候要用to_clob('这是CLOB字段类型')进行转换

 

 

     添加后的数据为01111111101011101,oracle会默认在前面加一个0,但是大小是不变的。

 

ORACLE还提供哦你一个包,包中有好多的方法,这些方法可以方便我们更好的操作对象。

 

DBMS_LOB.APPEND(dest_lob,src_lob)用于将原LOB中的数据添加到目标LOB末尾,该方法分别针对BLOB、CLOB和NCLOB。

 

APPEND(追加)方法,我们创建一个存储过程的例子:

CREATE OR REPLACT PROCEDURE append_test AS

dest_lob CLOB;

src_lob   CLOB;

GEGIN

     SELECT CLOB_COLUMN INTO dest_lob FROM COLB_TABLE WHERE ID=1

     FOR UPDATE;

     SELECT CLOB_COLUMN INTO src_lob FROM COLB_TABLE WHERE ID=2

     FOR UPDATE;

     DBMS_LOB.APPEND(dest_lob,src_lob);

END append_test;

 

EXEC ROCEDURE(执行存储过程就把第二行的数据追加到第一行末尾了)

 

COMPARE(比较)方法,我们创建一个存储过程的例子:

 

     return_value := DBMS_LOB.COMPARE(dest_lob,src_lob,amount,offset1,offset2);

 

     DBMS_OUTPUT.PUT_LINK(’比较结果' || return_value)

 

 

END compase_test;

 

 

 

EPASE(删除)方法,我们创建一个存储过程的例子:

     DBMS_LOB.COMPARE(dest_lob,amount,offset1);

CREATE OR REPLACT PROCEDURE epase_test AS

dest_lob CLOB;

offset1   INTEGER := 1;

amount   INTEGER := 3;

return_value INTEGER

 

GEGIN

     SELECT CLOB_COLUMN INTO dest_lob FROM COLB_TABLE WHERE ID=1

     FOR UPDATE;

 

 

 

END epase_test;

 

 

 

CREATE OR REPLACT PROCEDURE compare_test AS

dest_lob CLOB;

src_lob   CLOB;

offset1   INTEGER := 1;

offset2   INTEGER := 1;

amount   INTEGER := 5;

return_value INTEGER

 

GEGIN

     SELECT CLOB_COLUMN INTO dest_lob FROM COLB_TABLE WHERE ID=1

     FOR UPDATE;

     SELECT CLOB_COLUMN INTO src_lob FROM COLB_TABLE WHERE ID=2

     FOR UPDATE;

 

2、更新BLOB字段或者是往该类型字段插入数据的时候要用to_blob('1111111101011101‘)进行转换,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值