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;
Declarevarray_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不存在