oracle 集合 varray

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
上一篇oracle 集合 nested_table
下一篇Oracle 集合 plsql记录表
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭