Oracle集合类型的用法和特点简介(oracle集合类型)
Oracle数据库中常用的3类集合类型:VARRAY、NESTED TABLE和PL/SQL TABLE,它们具有相似的用法和特点。
(1)VARRAY
VARRAY定义了最大元素数量,是Oracle数据库种最常用的集合类型,指定一个固定的大小来存储单个数据类型的元素,VARRAY存储在行中,这样就可以使用SELECT,UPDATE等SQL DML操作,以及如下图所示的PL/SQL存储过程。
DECLARE
VARRAY_TEST VARRAY(3) OF CHAR(20);BEGIN
VARRAY_TEST(1) := 'Xu'; VARRAY_TEST(2) := 'Shuai';
VARRAY_TEST(3) := 'Test'; FOR I IN VARRAY_TEST.FIRST..VARRAY_TEST.LAST
LOOP DBMS_OUTPUT.PUT_LINE(VARRAY_TEST(I));
END LOOP;END;
(2)NESTED TABLE
NESTED TABLE是一种多行集合类型,它允许收集多个元素,索引NESTED TABLE可以按BLOB/CLOB 字段存储,它swap到磁盘上。也可以在嵌套表和表之间创建一对多的级联关系。
CREATE TYPE PERSON_LIST IS TABLE OF PERSON_TYPE
(3)PL/SQL TABLE
PL/SQL TABLE允许单个值的插入,修改和删除,它跟NESTED TABLE一样,也采用BLOB/CLOB索引来存储,但依靠索引只能索引类型的值只能用于存储单个数据类型的值的集合。
DECLARE
TYPE color_name IS TABLE OF VARCHAR2(20) INDEX BY BINARY_INTEGER; color_list color_name;
BEGIN color_list(1) := 'Blue';
color_list(2) := 'Green'; color_list.EXTEND;
color_list(3) := 'Yellow'; FOR i IN color_list.FIRST .. color_list.COUNT
LOOP DBMS_OUTPUT.PUT_LINE(color_list(i));
END LOOP; END;
从用法和特点看,VARRAY是列中存储,适合保存少量元素;而NESTED TABLE和PL/SQL TABLE则采用BLOB/CLOB索引来存储,可以存储无限多的元素,只要机器存储空间足够。此外,Oracle 在各种集合之间提供了有用的转换函数,可以轻松实现多种集合的互相转换和检索。总的来说,Oracle数据库中的集合类型用法和特性还是比较丰富的,适用于各种不同的数据库应用需求。