<LOB分类>
LOB,即Large Objects(大对象),是用来存储大量的二进制和文本数据的一种数据类型(一个LOB字段可存储可多达4GB的数据)。它又分为两种类型:内部LOB和外部LOB。
1.内部LOB将数据以字节流的形式存储在数据库的内部。因而,内部LOB的许多操作都可以参与事务,也可以像处理普通数据一样对其进行备份和恢复操作。Oracle支持三种类型的内部LOB:
1)BLOB(二进制数据)
2)CLOB(单字节字符数据)
3)NCLOB(多字节字符数据)。
其中CLOB和NCLOB类型适用于存储超长的文本数据,BLOB字段适用于存储大量的二进制数据,如图像、视频、音频等。
2.目前只支持一种外部LOB类型,即BFILE类型。在数据库内,该类型仅存储数据在操作系统中的位置信息,而数据的实体以外部文件的形式存在于操作系统的文件系统中。因而,该类型所表示的数据是只读的,不参与事务。
该类型可帮助用户管理大量的由外部程序访问的文件。
<LOB存储方式>
LOB由两部分组成:数据(值)和指向数据的指针(定位器)。尽管值与表自身一起存储,但是一个LOB列并不包含值,仅有它的定位指针。更进一步,为了使用大对象,程序必须声明定位器类型的本地变量。
当内部LOB被创建时,定位器被存放在列中,值被存放在LOB段中,LOB段是在数据库内部表的一部分。
当BFILE被创建时,定位器如同平常一样存储在列中,但是它的值被存储在数据库之外的操作系统文件中。
<LOB 的PL/SQL 调用>
在Oracle中,存储在LOB中数据称为LOB的值,如使用Select 对某一LOB字段进行选择,则返回的不是LOB的值,而是该LOB字段的定位器(可以理解为指向LOB值的指针)。
而要对某一LOB的值进行访问和维护操作,必需通过其定位器来进行。DBMS_LOB包中提供的所有函数和过程都以LOB定位器作为参数:
APPEND() 将源LOB中的内容加到目的LOB中
COPY() 从源LOB中复制数据到目的LOB
ERASE() 删除LOB中全部或部分内容
TRIM() 将LOB值减少到指定的长度
WRITE() 向LOB 中写入数据
COMPARE() 比较两个同种数据类型的LOB的部分或全部值是否相同
GETLENGTH() 获取LOB的长度
READ() 从LOB中读出数据
-- 创建测试表
CREATE TABLE J_LOB_TEST(
lob_id NUMBER(3),
pictures_lob BLOB DEFAULT empty_blob(),
text_lob CLOB DEFAULT empty_clob(),
media_file BFILE DEFAULT NULL,
CONSTRAINTS PK_J_LOB_TEST_ID PRIMARY KEY(lob_id)
)
-- 写数据
DECLARE
lobloc CLOB;
buffer VARCHAR2(2000);
amount NUMBER := 3;
offset NUMBER := 2;
BEGIN
insert into J_LOB_TEST (lob_id, text_lob) values (100, 'abcdefg');
SELECT text_lob
INTO lobloc --获取定位器
FROM J_LOB_TEST
WHERE lob_id = 100;
dbms_lob.read(lobloc, amount, offset, buffer); --读取数据到缓冲区
dbms_output.put_line(buffer); --显示缓冲区中的数据
END;
转自:http://solecjj.blogbus.com/logs/19497504.html
分享到:
相关推荐
而后者是不管LOB字段的长度如何,都不存储在表的段内,而是仅在表的行内存储20个字节的LOB定位符以及其他非LOB类型的数据,其数据存储在类型为LOBSEGMENT的段内。 在LOB数据类型的存储和优化中,需要考虑到表空间的...
在Oracle数据库中,当需要存储超过VARCHAR2...总之,PHP在处理Oracle的LOB类型时需要特别注意操作流程,通过OCI函数进行更复杂的处理以适应Oracle对LOB类型的特殊要求。这使得在存储和检索大数据时能保持高效和灵活。
Oracle数据库系统中,`DBMS_LOB`是一个重要的PL/SQL包,专门用于处理大型对象(LOBs,Large Object)。LOBs是Oracle提供的一种数据类型,用于存储大量数据,如文本、图像、音频或视频文件等。这个包包含了各种过程和...
在Oracle中,创建含有LOB列的表结构时,需要指定LOB类型和存储选项。例如: ```sql CREATE TABLE mylobs ( id NUMBER PRIMARY KEY, blob_data BLOB, clob_data CLOB ); ``` 存储选项包括`STORE AS`子句,...
这款工具主要针对Oracle数据库中的BLOB(Binary Large Object)、CLOB(Character Large Object)和NCLOB(National Character Large Object)等LOB类型提供便捷的管理和操作功能。它可能包括以下特性: 1. **数据...
Oracle 11gR2 文档中提到,LOB 可以存储在表中,也可以作为对象类型的属性。同时,Oracle 10gR2 文档中也提供了关于 LOB 的详细信息。 1.1 创建包含 LOB 的表 创建包含 LOB 的表时,需要遵守以下几个原则: * ...
本文档将基于提供的描述和部分内容,详细介绍如何针对 Oracle LOB 进行性能调优。 #### LOB 类型概述 LOB(大型对象)类型用于存储大量的文本或二进制数据。Oracle 支持四种 LOB 类型:`CLOB`、`NCLOB`、`BLOB` 和...
Oracle 中 LOB(Large OBjects)字段是一种特殊的数据类型,用于存储非结构化数据,如图像、音频、视频等。LOB 字段的存储管理和优化是数据库管理中一个重要的方面。本文将详细介绍 Oracle 中 LOB 字段的存储结构、...
在给出的代码中,`cxOracleolbTrasferDict`函数就是专门用来将cx_Oracle.LOB类型的查询结果转化为字典的。 这个函数的工作原理是逐个读取LOB对象的值,然后拼接成一个字符串。由于LOB对象可能包含的是序列化的JSON...
首先,让我们详细了解一下LOB类型。在Oracle数据库中,LOB是一种特殊的数据类型,用于存储大型的二进制或文本数据,如图片、视频、文档或大段文本。LOB分为四种主要类型:BLOB(Binary Large Object)用于存储二进制...
在本文中,我们将对 Oracle 和 DB2 的数据类型进行分类和对应说明,主要包括数值类型、日期时间类型、字符串类型、LOB 类型和 ROWID 类型等。 一、数值类型 Oracle 中的 NUMBER 类型可以对应 DB2/400 中的多种类型...
在Oracle数据库中,CLOB(Character Large Object)类型字段用于存储大量的文本数据,如XML文档、长篇文章等。由于其特殊性,处理CLOB类型的字段时可能会遇到性能问题,特别是当涉及索引时。本话题将围绕如何针对...
本文将详细介绍Oracle中的几种常见数据类型,并针对每种类型的特点进行分析,旨在帮助中高级编程开发人员以及初学者更好地理解和使用Oracle数据类型。 #### Character 类型 - **CHAR**: 是一种固定长度的字符类型...
本文将详细介绍如何在Oracle中实现CLOB字段到字符串类型的转换,并探讨其中的关键技术和注意事项。 #### 一、CLOB概述 1. **定义**: - `CLOB`是Oracle数据库提供的一种特殊的数据类型,用于存储大文本数据。 - ...
总的来说,这篇文章深入浅出地讲解了Oracle数据库如何使用LOB类型存储非结构化数据,以及如何通过JDBC接口进行存取操作。对于Java开发者和Oracle数据库管理员来说,这篇文章提供了宝贵的理论知识和实践经验,有助于...
Oracle数据库中的LOB(Large Object)数据类型用于存储非结构化数据,如文本、图像、音频和视频等。这种数据类型提供了高效、快速且灵活的数据访问方式。在Oracle中,LOB分为四种类型:BLOB、CLOB、NCLOB和BFILE。 ...
在Oracle数据库中,CLOB(Character Large Object)是一种用于存储大量文本数据的数据类型,如XML文档、长篇文章或任何其他非二进制的大型数据。本文将深入探讨Oracle中的CLOB类型文字处理,以及如何在实际操作中...
四、ROW和LOB类型 DB2/400提供VARCHAR和CLOB与Oracle中的RAW和LONG RAW相对应。Oracle也支持大对象:BLOB、CLOB、NCLOB等。DB2/400中的BLOB和CLOB只能存放2GB的数据,而Oracle中的BLOB和CLOB可以提供4GB的空间。 ...