本文使用系统自带的表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;
窗口截图:
运行结果截图: