一、固定数组
1、在模式(schema)级创建varray
类型
语法:
create or replace type varray_type_name is varray(n) of <element_type>
其中,
varray_type_name
是一个有效的属性名称;n
是varray
中元素的数量(最大值);element_type
是数组元素的数据类型。
可以使用alter type
语句更改变量的最大大小。
实例:
create or replace type namesarray is varray(3) of varchar2(10);
备注:在oracle中,一个用户就是一个schema,表都是建立在schema中的,也可以理解为每个用户拥有不同的表。一个用户想访问另外一个用户,也就是另外一个schema的表的时候,可以用 username.tablename的形式来访问。
2、在pl/sql块中创建varray
类型
语法:
type varray_type_name is varray(n) of <element_type>
实例:
declare type namesarray is varray(5) of varchar2(10); type gradesarray is varray(5) of integer; names namesarray; marks gradesarray; total integer; begin names := namesarray('kavita', 'pritam', 'ayan', 'rishav', 'aziz'); marks := gradesarray(98, 97, 78, 87, 92); total := names.count; dbms_output.put_line('总共有 '|| total || ' 名学生'); for i in 1 .. total loop dbms_output.put_line('姓名: ' || names(i) || ' 成绩: ' || marks(i)); end loop; end; 结果: 总共有 5 名学生 姓名: kavita 成绩: 98 姓名: pritam 成绩: 97 姓名: ayan 成绩: 78 姓名: rishav 成绩: 87 姓名: aziz 成绩: 92
注意:
- 在oracle环境中,varrays的起始索引始终为1;
- 可以使用varray类型的构造方法初始化varray元素,该方法与varray具有相同的名称;
- varrays是一维数组;
- varray在声明时自动为null,并且必须在引用元素之前初始化它。
二、可变数组
declare type org_table_type is table of varchar2(25) index by binary_integer; v_org_table org_table_type; begin v_org_table(1) := '1'; v_org_table(2) := '2'; v_org_table(3) := '3'; v_org_table(4) := '4'; v_org_table(5) := '5'; for i in v_org_table.first .. v_org_table.last loop dbms_output.put_line(v_org_table(i)); end loop; end;