您的位置:首页 > 数据库 > Oracle

Oracle PL/SQL 程序设计读书笔记 - 第13章 其他数据类型

2011-12-13 00:21 495 查看
Oracle PL/SQL 程序设计读书笔记 - 第13章 其他数据类型

Oracle PL/SQL 程序设计读书笔记 - 第13章 其他数据类型

13.1 BOLEAN类型

13.2 RAW数据类型

我们可以用RAW数据类型保存和操作量比较少量的二进制数据。和VARCHAR2以及其他字符类型不同的是,在数据库和PL/SQL程序音来回传递RAW数据时,不会发生任何字符集的转换。

variable_name RAW(maximun_size)

maximun_size的取值范围从1到32767。而数据库中的RAW列最多只能容纳2000个字节。

13.3 UROWID和ROWID数据类型

ROWID7就是一个行标识符,用来表示数据库表中一行记录的物理地址的二进制值。 UROWID中的U代表能用的,一个UROWID变量可以用于任何类型的表的任何ROWID。

注:一个表中的ROWID是可以改变的。在oracle8i之后出现的这个特性。所以通常不建议在我们的应用程序中使用ROWID。

13.4 LOB数据类型

LOB可以保存大量(从8到128TB)的二进制数据。 内部的LOB(包括BLOB,CLOB,NCLOB)都保存在数据库内部,并且参与到数据库事务中。外部的LOB(BFILE)代表的保存在数据库表空间以外的操作系统中的二进制文件。外部LOB不参与到事务中。

13.5 使用LOB

13.5.1 理解LOB定位符

数据库的LOB列存储的是LOB定位符,这些定位符又指向保存在数据库其他地方的LOB段的真实数据。

13.5.2 LOB的空和NULL

一个空的LOB是指LOB定位符没有指向任何LOB数据。它和NULL LOB不同,后者是指LOB列中(或者变量)连LOB定位符都没有。我们必须首先用IS NULL测试来检查是否存在定位符,然后在检查长度非零。

13.5.3 向LOB中写数据

DBMS_LOB.WRITE 向LOB中随机的写入数据

DBMS_LOB.WRITEAPPEND 向LOB的末尾追加数据

13.5.3 读取LOB数据

DBMS_LOB.READ 读取LOB数据

13.5.5 BFILE不同于其他

BFILE的值保存在一个操作系统文件中,而不是数据库内部。

BFILE不会参与到事务中,然而,对于BFILE定位符的修改可以回滚或者提交。

一般而言,在数据库内部,我们对BFILE口令能读取。

DBMS_LOB.LOADCLOBFROMFILE 从一个BFILE中加载到CLOB

DBMS_LOB.LOADBLOBFROMFILE 从一个BFILE中加载到BLOB。

13.5.6 SecureFiles和BasicFiles

SecureFiles是从Oracle数据库的11g引入的,在旧的LOB实现方式上提供了许多改进,后者叫做BasicFiles。

13.5.7 临时LOB

创建一个临时LOB

DBMSLOB.CREATEMPORARY ( lobloc IN OUT NOCOPY [ BLOB | CLOB CHARACTER SET ANY_CS ], cache IN BOOLEAN, dur IN PLSINTEGER := DBMSLOB.SESSION);

释放临时LOB

DBMSLOB.FREETEMPORARY ( lobloc IN OUT NOCOPY [ BLOB | CLOB CHARACTER SET ANY_CS ]);

检查一个LOB是否是临时的

函数ISTEMPORARY可以告诉我们一个LOB定位符指向的到底是一个临时LOB还是一个持久化的LOB。返回1说明是一个临时LOB,返回0说明不是。

DBMS_LOB.ISTEMPORARY (
lob_loc IN OUT NOCOPY [ BLOB | CLOB CHARACTER SET ANY_CS ])

13.6 预定义的对象类型

13.6.1 XMLType 类型

13.6.2 URI 类型

13.6.3 Any 类型

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐