集合¶
- 通过create type语句可以创建集合类型。集合类型分为两种:嵌套表和变长数组。通过create type语句创建的集合类型与包中的集合类型不同点在于:
- 不能创建索引表
- 可以作为普通过程的返回值和参数(包中的集合仅能用于包中过程的返回值和参数)
语法:
- 参数:
- TABLE创建的类型为嵌套表,VARRAY创建的类型为变长数组
- 说明:
- 创建集合类型的时候会为类型创建同名的构造函数 type_name可以是数据库的内置数据类型,也可以是create type语句创建的类型(包括object type或另一个集合类型) 集合类型也可以作为object type的一个字段的类型,但目前还不支持使用嵌套集合类型的object type创建表 TABLE函数可以把一个集合对象转换为一张虚拟的表
示例:
CREATE OR REPLACE TYPE nt IS TABLE OF INT;
/
CREATE OR REPLACE FUNCTION func_return_nt RETURN nt
IS
a nt := nt(1,2,3);
BEGIN
RETURN a;
END;
/
SELECT * FROM table(func_return_nt);
COLUMN_VALUE(int) |
-----------------------
1 |
-----------------------
2 |
-----------------------
3 |
总数目:3
CREATE OR REPLACE TYPE rec IS OBJECT(a INT, b VARCHAR2);
/
CREATE OR REPLACE TYPE va IS VARRAY(2) OF rec;
/
SELECT * FROM table(va(rec(1, 'a'), rec(2, 'b')));
A(int) |B(varchar) |
----------------------------
1 |a |
----------------------------
2 |b |
总数目:2