关键字:
标量类型;集合类型
1.标量类型
2.用户自定义类型
3.%TYPE
使用列属性或变量名加上%TYPE用来标识字段类型
用来表示一个和已有表字段具有相同类型的类型
除继承字段类型外,不能继承字段的其他属性
例如:不能继承在字段上定义的NOT NULL属性或者DEFAULT属性
4.%ROWTYEP
一个复合类型,叫做行变量
用来表示和一个现有的表或者视图的行类型相同的类型
一个%ROWTYPE类型变量,可存放SELECT检索结果集的一条记录
5.集合类型
集合类型是一种复合类型,包括以下三种:
关联数组(Associative Array)
具有唯一键值的集合类型
具有以下特性:
包含零或多个具有相同数据类型的元素
用户可按键值检索
键值可是整型等数值类型,也可是字符串等非数值类型
键值连续且有序
只能用于PL/SQL环境
语法:
TYPE assoc_type_name
IS TABLE OF element_type [ NOT NULL ] INDEX BY index_type;
index_type ::= INT | VARCHAR | VARCHAR2 | TEXT
嵌套表(Nested Table)
基于键-值对的集合类型。
与关联数组相比,它的键值只能为整型,即从1开始的连续值
必须使用和其同名的构造函数进行初始化
语法:
TYPE nest_table_type_name
IS TABLE OF element_type [ NOT NULL ];
可变数组(Varray)
下标类型为INT且从1开始
在以下方面与嵌套表不同:
可变数组在定义时需指定最大元素个数,且实际应用中不能超过该限制
可变数组的下标必须连续
删除元素时,可变数组不能使用delete(n)和delete(m,n)方法,但可使用delete() 方法(即删除所有元素)
语法:
TYPE varray_type_name IS VARRAY
(size_limit) OF element_type
[ NOT NULL ];
6. RECORD类型
记录类型(RECORD)
由单行多列的标量构成的复合结构,将一个或多个标量封装成一个对象
语法:
TYPE record_type IS RECORD (filed1 type1[not null][:=expr1]
[, RECORD(filed1 type1[not null][:=expr1]]);