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 record table 一个实例

感觉不错的实例,记录一下 set serveroutput on; DECLARE   TYPE Company IS RECORD(     companyId varchar2(10), ...
  • sbtmbj2010
  • sbtmbj2010
  • 2015年04月30日 09:39
  • 486

ORACLE实现存储过程返回查询结果集合的方法

--实现存储过程返回查询结果集合的方法
  • u013225189
  • u013225189
  • 2016年08月11日 16:00
  • 2365

undefined reference to `std::ios_base::Init::Init()

用gcc(C编译器)编译C++程序,会报标题的错误。 原因是用gcc编译c++程序时,链接的库文件为libstdc++.so,而不是默认的libc.so,因此需要用-lstdc++参数指明,否则会在...
  • kittaaron
  • kittaaron
  • 2012年10月23日 09:31
  • 2170

oracle存储过程中数组申明和遍历

create or replace procedure test as --申明数组类型 type t_test is table of varchar2(9); test t_test:=t...
  • aline200
  • aline200
  • 2015年09月14日 16:26
  • 7122

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

ORACLE中RECORD、VARRAY、TABLE的使用详解
  • liangweiwei130
  • liangweiwei130
  • 2014年07月28日 08:22
  • 42643

ORACLE 中 VARRAY的用法

看到同事写的存储过程里面有这样一句:     TYPE ARRAY_TYPE IS VARRAY(10000) OF VARCHAR2(60);     感到很茫然,幸好还有网络可以求助,...
  • johnnydev
  • johnnydev
  • 2012年05月03日 09:47
  • 4628

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

三种集合比较   元素下标 个数限制 初始化 表数据列 索引表 (binary_integer、pls_integer、varchar2) 无限制 不需要 不可以 ...
  • VampiresLove
  • VampiresLove
  • 2014年10月25日 19:27
  • 553

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

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

142.Oracle数据库SQL开发之 集合——使用CAST转换类型

142.Oracle数据库SQL开发之 集合——使用CAST转换类型 欢迎转载,转载请标明出处: 使用CAST可以将一种集合类型转换为另一种集合类型。 1.  使用CAST将变长数组转换为嵌套表 创...
  • notbaron
  • notbaron
  • 2015年12月04日 23:05
  • 30582

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

创建变长数组类型 CREATE TYPE varray_type AS VARRAY(2) OF VARCHAR2(50);    这个变长数组最多可以容纳两个数据,数据的类型为 varchar...
  • zouqingfang
  • zouqingfang
  • 2013年08月29日 16:00
  • 854
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:oracle 集合 varray
举报原因:
原因补充:

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