第26章大型对象

上传人:今*** 文档编号:107428108 上传时间:2019-10-19 格式:PPT 页数:24 大小:157KB
返回 下载 相关 举报
第26章大型对象_第1页
第1页 / 共24页
第26章大型对象_第2页
第2页 / 共24页
第26章大型对象_第3页
第3页 / 共24页
第26章大型对象_第4页
第4页 / 共24页
第26章大型对象_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《第26章大型对象》由会员分享,可在线阅读,更多相关《第26章大型对象(24页珍藏版)》请在金锄头文库上搜索。

1、Oracle SQL&PL/SQL 第26章 大型对象,创建并维护LOB数据类型 区分内部LOB和外部LOB 使用PL/SQL包DBMS_LOB 区分LONG 和LOB数据类型 描述临时LOB的用途,本章要点,大型对象类型,BFILE、BLOB、CLOB 和 NCLOB 它们允许您存储无结构数据组成的程序块,如文本、图形图像、视频剪辑和声波,其大小最大可达 4 GB 允许随机或按片访问数据 基于 LOB 数据类型的列称为 LOB 列,大型对象类型(续),LOB 由两个不同的组件构成值 是要存储的实际数据 定位器 是指定数据库中对象位置的指示器,大型对象类型(续),LOB 列存储对象的定位器 可

2、以存储 LOB 在数据库内部(内部 LOB 或嵌入) 数据库外(外部 LOB 或脱机),例如在操作系统文件中 LOB 在单一列实例中最多可以存储 4GB 数据,创建具有 LOB 列的表,与使用其他数据类型创建表相似 示例 CREATE TABLE books (book_code CHAR(5), book_image BFILE, book_review CLOB);,更新 LOB 中的数据,通常正被更新的表在后台被自动锁定 执行事务时,释放锁定 对于 LOB 值,必须显式地锁定行 若要释放该锁,可触发 COMMIT 语句 只有对内部存储的 LOB 才需要显式锁定,更新 LOB 中的数据(续

3、),使用 FOR UPDATE 子句完成显式锁定 示例 SELECT book_review FROM books WHERE book_code = B0189 FOR UPDATE; UPDATE books SET book_review = Absolutely Thrilling WHERE book_code = B0189; COMMIT;,显示 LOB 中的数据,使用 SELECT 语句只能显示 CLOB 数据类型中的数据 示例 SELECT book_code, book_review FROM books;,DBMS_LOB 数据包,提供了用来访问和操纵 LOB 的例程 所

4、有例程都基于 LOB 定位器工作 将一个 LOB 定位器选入局部 PL/SQL LOB 变量,并使用该参数作为 DBMS_LOB 例程访问 LOB 值的输入参数,DBMS_LOB.READ 过程,在指定偏移处开始从 LOB 读取数据 DBMS_LOB.READ(loc, num, offset, buff) 其中 loc 是 LOB 定位器 num 是将要读取的字节/字符数量 offset 是以字节/字符表示的距 LOB 起始位置的偏移量 buff 是读取操作的输出缓冲区,DBMS_LOB.SUBSTR 函数,从指定偏移处开始返回部分 LOB 值 DBMS_LOB.SUBSTR(loc, nu

5、m, offset) 其中 loc 是 LOB 定位器 num 是将要读取的字节/字符数量 offset 是以字节/字符表示的距 LOB 起始位置的偏移量,DBMS_LOB.INSTR 函数,返回 LOB 中第 n 处发生的匹配模式的位置 DBMS_LOB.INSTR(loc, ptrn, offset, ocrs) 其中 loc 是 LOB 定位器 ptrn 是测试模式 offset 是一字节/字符为单位的模式匹配开始位置的偏移量 ocrs 是发生号(从 1 开始),DBMS_LOB.GETLENGTH 函数,获得 LOB 值的长度 DBMS_LOB.GETLENGTH(loc) 其中 lo

6、c 是 LOB 定位器,DBMS_LOB.COMPARE 函数,比较两个 LOB 值 DBMS_LOB.COMPARE(loc1, loc2, num, offset1, offset2) 其中 loc 是要进行比较的第一个 LOB 的定位器 loc2 是要进行比较的第二个 LOB 的定位器 num 是要比较的字节/字符数量 offset1 是以字节/字符为单位的第一个 LOB 的偏移量 offset2 是以字节/字符为单位的第二个 LOB 的偏移量,DBMS_LOB.WRITE 过程,将数据写入到 LOB 的指定偏移位置 DBMS_LOB.WRITE(loc, num, offset, bu

7、ff) 其中 loc 是 LOB 定位器 num 是要写入的字节/字符数量 offset 是以字节/字符为单位的距 LOB 起始位置进行写操作的偏移量 buff 是写操作的输入缓冲区,DBMS_LOB.APPEND 过程,将源 LOB 的内容追加到目的 LOB DBMS_LOB.APPEND(loc1, loc2) 其中 loc1 是目的 LOB 定位器 loc2 是源 LOB 定位器,DBMS_LOB.ERASE 过程,删除 LOB 的全部或部分内容 DBMS_LOB.ERASE(loc, num, offset) 其中 loc 是 LOB 定位器 num 是将要删除的字节/字符数量 off

8、set 是以字节/字符表示的距 LOB 起始位置的偏移量,DBMS_LOB.TRIM 过程,将 LOB 值截短到指定的较小长度 DBMS_LOB.TRIM(loc, newlen) 其中 loc 是 LOB 定位器 newlen 是以字节/字符为单位的截断后的 LOB 值的长度,DBMS_LOB.COPY 过程,将源 LOB 的全部或部分内容复制到目标 LOB DBMS_LOB.COPY(loc1, loc2, num, offset1, offset2) 其中 loc1 是目的 LOB 的定位器 loc2 是源 LOB 的定位器 num 是将要复制的字节/字符数量 offset1 是以字节/

9、字符为单位的目的 LOB 中的偏移量 offset2 是以字节/字符为单位的源 LOB 中的偏移量,DBMS_LOB BFILE 例程,特定 BFILE 数据类型的只读例程 FILEEXISTS 函数 检查服务器上是否存在该文件 FILEISOPEN 函数 检查文件是否打开 FILEOPEN 过程 打开文件 FILEGETNAME 过程 获得目录别名和文件名 FILECLOSE 过程 关闭文件,DBMS_LOB BFILE 例程(续),示例 DBMS_LOB.FILEEXISTS(loc) DBMS_LOB.FILEISOPEN(loc) DBMS_LOB.FILEOPEN(loc) DBMS_LOB.FILECLOSE(loc) 其中 loc 是 BFILE LOB 的定位器,DBMS_LOB BFILE 例程(续),示例 DBMS_LOB.FILEGETNAME(loc, dir_alias, file_name) 其中 loc 是 BFILE LOB 的定位器 dir_alias 是目录别名的输出变量 file_name 是文件名的输出变量,小结,LOB有四种数据类型: BLOB 大型二进制对象。 CLOB 大型字符对象 NCLOB 存储多字节字符数据的大型对象 BFILE 存储在数据库外部的二进制文件中的大型对象,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号