第一,PL/SQL表
它只能作为PL/SQL类型,不能作为表列类型。
下标可以为负值,并且元素个数无限制。
下标类型key_type: 包括BINARY_INTEGER、PLS_INTEGER、VARCHAR2。
语法:
TYPE type_name IS TABLE OF element_type
[NOT NULL] INDEX BY key_type;
identifier type_name;
例如:
DECLARE
TYPE category_table_type IS TABLE OF VARCHAR2 (40)
INDEX BY VARCHAR2 (40);
category_table category_table_type;
BEGIN
category_table ('长沙') := '长沙,我爱你!';
DBMS_OUTPUT.put_line (category_table ('长沙'));
END;
第二,嵌套表
可以作为表列的数据类型使用。
当使用嵌套表元素时,需要使用构造方法初始化嵌套表变量。
下标从1开始计算。
语法:
TYPE type_name IS TABLE OF element_type;
identifier type_name;
例子:
DECLARE
TYPE category_table_type IS TABLE OF tb_out_service.servicename%TYPE;
category_table category_table_type;
BEGIN
category_table := category_table_type ('全省', '长沙', '常德');
SELECT servicename
INTO category_table (3)
FROM tb_out_service
WHERE serviceid = '&serviceid';
DBMS_OUTPUT.put_line (category_table (1));
DBMS_OUTPUT.put_line (category_table (2));
DBMS_OUTPUT.put_line (category_table (3));
END;
第三,变长数组(VARRAY)
需要使用构造方法初始化VARRAY变量。
语法:
TYPE type_name is VARRAY(size_limit) OF element_type [NOT NULL];
identifier type_name;