oracle 集合 varray

原创 2015年07月10日 02:00:36

1、创建语法

      Create Or Replace varray_type_name Is Varray(size_limit) Of Element_type [Not Null];

      varray_obj varray_type_name;

      注:下标从1开始,元素个数有限制 使用变长数组对象元素前,必须使用构造函数初始化

2、实例

Create Or Replace Type varray_type Is Varray(100) Of Varchar2(20) Not Null;

Declare
  varray_obj varray_type;
  n Number;
Begin
  varray_obj:=varray_type('a','b','c');
  If varray_obj.exists(1) Then 
     dbms_output.put_line('--从第1个元素开始输出');
     n:=varray_obj.first;
     Loop
       dbms_output.put_line('下标:'||n||' 值:'||varray_obj(n));
       Exit When n=varray_obj.last;
       n:=varray_obj.next(n);
     End Loop;
     
     dbms_output.put_line('--从最后1个元素开始输出');
     n:=varray_obj.last;
     Loop
       dbms_output.put_line('下标:'||n||' 值:'||varray_obj(n));
       Exit When n=varray_obj.first;
       n:=varray_obj.prior(n);
     End Loop;
  End If;
End;
输出:
--从第1个元素开始输出
下标:1 值:a
下标:2 值:b
下标:3 值:c
--从最后1个元素开始输出
下标:3 值:c
下标:2 值:b
下标:1 值:a


Create Table tmp_varray(Id Number ,phone varray_type);


Insert Into tmp_varray Values(1,varray_type('13100000001','13100000002','13100000003'));
Insert Into tmp_varray Values(2,varray_type('13200000001','13200000002','13200000003'));

Declare
  varray_obj varray_type;
  n Number;
Begin
  Select phone Into varray_obj From tmp_varray Where Id=1;
  If varray_obj.exists(1) Then 
     dbms_output.put_line('--从第1个元素开始输出');
     n:=varray_obj.first;
     Loop
       dbms_output.put_line('下标:'||n||' 值:'||varray_obj(n));
       Exit When n=varray_obj.last;
       n:=varray_obj.next(n);
     End Loop;
     
     dbms_output.put_line('--从最后1个元素开始输出');
     n:=varray_obj.last;
     Loop
       dbms_output.put_line('下标:'||n||' 值:'||varray_obj(n));
       Exit When n=varray_obj.first;
       n:=varray_obj.prior(n);
     End Loop;
  End If;
End;
输出:
--从第1个元素开始输出
下标:1 值:13100000001
下标:2 值:13100000002
下标:3 值:13100000003
--从最后1个元素开始输出
下标:3 值:13100000003
下标:2 值:13100000002

下标:1 值:13100000001

3、Exists():返回指定集合对象元素是否存在    true存在 false不存在

oracle 三种集合数据类型【varray,嵌套表,联合数组】+record

在oracle 11.2中,oracle总共提供了三种集合类型:varray,嵌套表,联合数组。所谓集合,简单来说就是保存多行数据的数据类型,相当于保存在内存中的小型表,便于暂时保存数据,以及数据的重...

ORACLE 集合(关联数组,嵌套表,VARRAY)

三种集合比较   元素下标 个数限制 初始化 表数据列 索引表 (binary_integer、pls_integer、varchar2) 无限制 不需要 不可以 ...

Oracle三种集合数据类型(索引表,嵌套表,VARRAY 数组)的比较-PLSQL—之三

PL/SQL中没有数组的概念,他的集合数据类型和数组是相似的。在7.3以前的版本中只有一种集合,称为PL/SQL表,在这之后又有两种集合数据类型:嵌套表和varray。其中varray集合中的元素是有...
  • xys_777
  • xys_777
  • 2011年11月11日 13:34
  • 2009

oracle:变长数组varray,嵌套表,集合

创建变长数组类型 CREATE TYPE varray_type AS VARRAY(2) OF VARCHAR2(50);    这个变长数组最多可以容纳两个数据,数据的类型为 varchar...

ORACLE中RECORD、VARRAY、TABLE的使用详解

ORACLE中RECORD、VARRAY、TABLE的使用详解

ORACLE中RECORD、VARRAY、TABLE的使用详解

1     说明 1.1       RECORD 定义记录数据类型。它类似于C语言中的结构数据类型(STRUCTURE),PL/SQL提供了将几个相关的、分离的、基本数据类型的变量组成一...
  • vbasten
  • vbasten
  • 2015年12月19日 22:59
  • 154

racle的STRUCT和VARRAY的读写方法

Oracle的STRUCT和VARRAY的读写方法 巧巧电脑网络 2010-02-25 qqread 佚名   收藏此文  大 中小 分享到 QQ空间 人人网 开心网 豆瓣 新浪...

varray: 灵活的数组结构与stl valarray的解构(2)

上一片文章我们构造了一个简单的varray类,对这个用户定义的具体类型来说,还不够功能完善,有很多的运算符操作都没有放进去。这是特的为了表述清楚而没有加入的。 这类操作包括: 1。取+/-/~/!...

54.Oracle数据库SQL开发之 高级查询——使用集合操作符

54.Oracle数据库SQL开发之 高级查询——使用集合操作符 集合操作符有如下图1 :          使用集合操作符的时候,必须牢记一个限制条件:所有查询返回的列数以及列的类型...
  • notbaron
  • notbaron
  • 2015年11月12日 22:31
  • 30047

oracle10G/11G官方下载地址集合 直接迅雷下载

Oracle Database 11g Release 2 (11.2.0.1.0) for Microsoft Windows (64-bit) http://download.o...
  • zlsunnan
  • zlsunnan
  • 2012年10月10日 22:02
  • 141832
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:oracle 集合 varray
举报原因:
原因补充:

(最多只允许输入30个字)