目录
PL/SQL编程语言提供了一种称为VARRAY的数据结构,它可以存储相同类型元素的固定大小顺序集合。varray用于存储有序的数据集合,但通常最好将数组视为相同类型变量的集合。所有varray元素是由连续的内存位置组成。最低的地址对应第一个元素,而最后一个元素的地址最高。 数组是集合类型数据的一部分,表示可变大小的数组。 varray中的每个元素都具有与之相关联的索引。它还具有可以动态更改的容量(大小)。
使用CREATE TYPE语句创建varray类型。必须指定存储在varray中的元素的最大容量(大小)和类型。
1、在模式(schema)级创建VARRAY类型的基本语法:
CREATE OR REPLACE TYPE varray_type_name IS VARRAY(n) of <element_type>
其中,
可以使用ALTER TYPE语句更改变量的最大大小。
例如:
CREATE OR REPLACE TYPE namearray AS VARRAY(3) OF VARCHAR2(10);
2、在PL/SQL块中创建VARRAY类型的基本语法:
TYPE varray_type_name IS VARRAY(n) of <element_type>
例如:
TYPE namearray IS VARRAY(5) OF VARCHAR2(10);
3、实例
- DECLARE
- type namesarray IS VARRAY(5) OF VARCHAR2(10);
- type grades IS VARRAY(5) OF INTEGER;
- names namesarray;
- marks grades;
- total integer;
- BEGIN
- names := namesarray('Kavita', 'Pritam', 'Ayan', 'Rishav', 'Aziz');
- marks:= grades(98, 97, 78, 87, 92);
- total := names.count;
- dbms_output.put_line('Total '|| total || ' Students');
- FOR i in 1 .. total LOOP
- dbms_output.put_line('Student: ' || names(i) || 'Marks: ' || marks(i));
- END LOOP;
- END;
- /
请注意:
4、实例2
变量的元素也可以是任何数据库表的%ROWTYPE或任何数据库表字段的%TYPE表来引用表示,如:
- DECLARE
- CURSOR c_customers is SELECT name FROM customers;
- type c_list is varray (6) of customers.name%type;
- name_list c_list := c_list();
- counter integer :=0;
- BEGIN
- FOR n IN c_customers LOOP
- counter := counter + 1;
- name_list.extend; -- 使⽤extend申请空间,⼀次只申请⼀个空间长度
- name_list(counter) := n.name;
- dbms_output.put_line('Customer('||counter ||'):'||name_list(counter));
- END LOOP;
- END;
- /