本文使用系统自带的表emp表,对应的表结构和数据截图如下:
创建测试脚本窗口输入如下脚本信息:
-- Created on 2018/3/28 by E.WANG
/*
VARRAY数据结构可存储相同类型元素的一个固定大小的连续集合。
VARRAY用于存储数据的有序集合,但它往往是更加有用认为数组作为相同类型的变量的集合。
所有可变数组由连续的存储位置。最低的地址对应于第一元素和最高地址的最后一个元素。
数组是所有集合类型数据的一部分,并且它代表了可变大小的的阵列。
在一个VARRAY每个元素都有与其相关联的索引。
*/
declare
/*
一个VARRAY类型是用CREATE TYPE语句创建。必须指定最大长度,并存储在VARRAY元素的类型。
PL/SQL块创建VRRAY类型的基本语法:
TYPE varray_type_name IS VARRAY(n) of <element_type>
*/
--创建一个整型数组
type int_varray is varray(14) of int;
--VARRAY的元素也可以是任何%TYPE任何数据库表或%ROWTYPE数据库表的字段
--创建一个游标
cursor cr_emp is select ename from emp;
type ename_varray is varray(14) of emp.ename%type;
enameList ename_varray;
indexList int_varray;
posit int:=0;
begin
--初始化数组
indexList:=int_varray();
enameList:=ename_varray();
for e in cr_emp loop
--记录元素位置
posit:=posit+1;
-- 在enameList末端添加一个空元素
enameList.extend;
enameList(posit):=e.ename;
-- 在indexList末端添加一个空元素
indexList.extend;
--给对应元素位置赋值
indexList(posit):=posit;
--输出对应行元素的值
dbms_output.put_line('EMP('|| indexList(posit) ||'):'||enameList(posit));
end loop;
end;
窗口截图:
运行结果截图: