oracle 集合 varray

本文详细介绍了如何在Oracle数据库中创建和使用变长数组,包括其语法、实例演示以及如何通过exists()函数检查数组元素的存在性,并展示了如何在表中插入和查询变长数组数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值