PL/SQL数组(varray)操作实例说明

本文使用系统自带的表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;

窗口截图:


运行结果截图:


猜你喜欢

转载自blog.csdn.net/henni_719/article/details/79730143