赞
踩
集合是一种类似于列表或者一维数组的数据结构;一个集合是由若干个元素(一大堆数据)组成的,集合中的每个元素位于列表中的一个固定索引处。有时候,集合中的一个元素叫做一行,对应的索引就叫做行号。
同质元素:集合中的每一个元素的数据类型都是相同的。
属性 | 关联数组 | 嵌套表 | VARRAY |
纬度 | 一维 | 一维 | 一维 |
是否可用于SQL | 不可用 | 可用 | 可用 |
是否可作为表中列的数据类型 | 不可用 | 可以;数据在“行外”保存的(一个单独的表) | 可以;数据保存在“行内”(在同一个表中) |
未初始化的状态 | 空(不能是NULL),元素是未定义 | 自动就是null的,元素的引用是非法的 | 自动就是null的,元素的引用是非法的 |
初始化 | 在申明时自动完成 | 通过构造函数,或者赋值,或者fetch操作完成 | 通过构造函数,或者赋值,或者fetch操作完成 |
在PL/SQL中元素的引用方式 | BINARY_INTEGER以及子类型(-2147483647~2147483647) | VARCHAR2(Oracle 9i数据库R2版本或者更高版本) | 1到2147483647间的正整数 |
是否稀疏 | 是 | 开始不是,进过删除后就是了 | 不是 |
是否有界 | 无界 | 可以扩展 | 有界 |
可以随时对任意一个元素赋值 | 可以 | 不可以,可以需要先用EXTEND进行扩展 | 不可以,可能需要执行EXTEND进行扩展,而且用EXTEND扩展时不能超出上边界 |
扩展的方法 | 给一个新下标指向的元素赋值 | 使用内置的EXTEND过程(或者TRIM进行压缩),没有预定义的最大值 | EXTEND(或者TRIM),但是最大只能到声明的最大尺寸 |
可以比较相等与否 | 不可以 | 可以,要求是Oracle数据库10g或以后的版本 | 不可以 |
是否可以通过集合操作进行操作 | 不可以 | 可以,要求是Oracle数据10g或者以后的版本 | 不可以 |
存取数据石佛会保留顺序或者下标 | N/A | 不保留 | 保留 |
TYPE table_type_name IS TABLE OF datatype [ NOT NULL ] INDEX BY index_type;
variable_name table_type_name ;
CREATE [ OR REPLACE ] TYPE type_name AS | IS TABLE OF element_datatype [ NOT NULL ];
TYPE type_name IS TABLE OF element_datatype [ NOT NULL ];
CREATE [ OR REPLACE ] TYPE type_name AS | IS TABLE OF element_datatype [ NOT NULL ];
TYPE type_name IS VARRAY (max_elements) OF element_datatype [ NOT NULL ];
DROP TYPE type_name [ FORCE ];
collection_name collection_type [ := collection_type (...) ];
构造函数的名字和类型的名字是相同的,并且接收一个用逗号分隔的元素列表作为参数。如果声明的是一个嵌套变量或者VARRAY变量,在使用这个变量之前必须要先对这个变量进行初始化。
如果两个集合是基于同一个集合的类型,那么就可以通过直接赋值的方式用一个集合变量给另一个变量进行初始化。
访问集合的数据:
未完待续......
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。