其它:
日期,只有一种类型--DATE,用来存储时间信息,站用7个字节(从世纪到秒),绝对没有“千年虫”问题。
行标识,只有一种类型 --ROWID,用来存储“行标识符”,可以利用ROWIDTOCHAR函数来将行标识转换成为字符。
布尔,只有一种类型 --BOOLEAN,仅仅可以表示TRUE、FALSE或者NULL。
可信,只有一种类型 --MLSLABEL,可以在TRUSTED ORACLE中用来保存可变长度的二进制标签。在标准ORACLE中,只能存储NULL值。
二、复合(COMPOSITE)
标量类型是经过预定义的,利用这些类型可以衍生出一些复合类型。主要有记录、表。
记录,可以看作是一组标量的组合结构,它的声明方式如下:
TYPE record_type_name IS RECORD
( filed1 type1 [NOT NULL] [:=expr1]
.......
filedn typen [NOT NULL] [:=exprn] )
其中,record_type_name是记录类型的名字。(是不是看着象 CREATE TABLE?......)引用时必须定义相关的变量,记录只是TYPE,不是VARIABLE。
表,不是物理存储数据的表,在这里是一种变量类型,也称为PL/SQL表,它 类似于C语言中的数组,在处理方式上也相似。它的声明方式如下:
TYPE table_type_name IS TABLE OF scalar_type INDEX BY BINARY_INTENER;
其中,table_type_name是类型的名字,scalar_type 是一种标量类型的类型声明。引用时也必须定义相关的变量。表和数组不同,表有两列,KEY和VALUE,KEY就是定义时声明的 BINARY_INTENER,VALUE就是定义时声明的scalar_type。
三、引用(REFERENCE)
在PL/SQL8.0之前,只有一种类型--REF CURSOR,也就是游标。它的定义较为简单,
CURSOR cursor_name IS select .....from.....;
在PL/SQL8.0之后,引入了REF类型,它指向一个对象。这种类型将单 独讲解。(等我弄明白再说,免得在高人面前......)
四、LOB型
LOB变量主要是用来存储大量数据的数据库字段,最大可以存储4G字节的内容。主要有:
CLOB:和ORACLE7中的LONG类型相似,存储单字节字符数据。(别用来存中文)
NCLOB:用来存储定宽多字节字符数据。
BLOB:和LONG RAW相似,用来存储无结构的二进制数据。
BFILE:它用来允许ORACLE对数据库外存储的大型二进制文本进行只读形式的访问。
Oracle 9i共提供了16种标量数据类型表:
名称
含义
Char
用于描述定长的字符型数据,长度<=2000字节
varchar2
用于描述变长的字符型数据,长度<=4000字节
nchar
用来存储Unicode字符集的定长字符型数据,长度<=1000字节
nvarchar2
用来存储Unicode字符集的变长字符型数据,长度<=1000字节
number
用来存储整型或者浮点型数值
Date
用来存储日期数据
Long
用来存储最大长度为2GB的变长字符数据
Raw
用来存储非结构化数据的变长字符数据,长度<=2000字节
Long raw
用来存储非结构化数据的变长字符数据,长度<=2GB
rowid
用来存储表中列的物理地址的二进制数据,占用固定的10个字节
Blob
用来存储多达4GB的非结构化的二进制数据
Clob
用来存储多达4GB的字符数据
nclob
用来存储多达4GB的Unicode字符数据
Bfile
用来把非结构化的二进制数据存储在数据库以外的操作系统文件中
urowid
用来存储表示任何类型列地址的二进制数据
float
用来存储浮点数
22/2<12