PL/SQL常用集合方法

以前都是断断续续的看的oracle操作集合方法,比较片面,网上搜了一把,做个总结:

 

集合方法 :ORACLE 提供的用于操纵集合变量的内置函数或过程 , 其中 EXISTS,COUNT,LIMIT,FIRST,NEXT,FRIOR NEXT 是函数

EXTEND,TRIMDELETE 则是过程

集合方法只能在 PL/SQL 语句中使用 , 不能在 SQL 语句中使用 .

集合方法 EXTENDTRIM 只适用于嵌套表和 VARRAY, 而不适合于索引表

1.EXISTS: 用于确定集合元素是否存在

declare type ename_table_type is table of emp.ename%type; ename_table ename_table_type; begin if ename_table.exists(1) then ename_table(1):='SCOTT'; else dbms_output.put_line('必须初始化集合元素'); end if; end;

 

2.COUNT: 用于返回当前集合变量中的元素总个数 .

declare type ename_table_type is table of emp.ename%type index by binary_integer; ename_table ename_table_type; begin ename_table(-5):='scott'; ename_table(1):='smith'; ename_table(5):='mary'; ename_table(10):='blake'; dbms_output.put_line('集合元素总个数:'||ename_table.count); end;

 

 

3.LIMIT: 用于返回集合元素的最大个数 . 因为嵌套表和索引表的余数个数没有限制 , 返回 NULL

对于 VARRAY 来说,该方法返回 VARRAY 所允许的最大元素个数

 

declare type ename_table_type is varray(20) of emp.ename%type; ename_table ename_table_type:=ename_table_type('mary'); begin dbms_output.put_line('集合元素的最大个数:'||ename_table.limit); end;

 

 

4.FIRST LAST:FIRST 用于返回集合变量第一个元素的下标 ,LAST 方法则用于返回集合变量最后一个元素的下标

declare type ename_table_type is table of emp.ename%type index by binary_integer; ename_table ename_table_type; begin ename_table(-5):='scott'; ename_table(1):='smith'; ename_table(5):='mary'; ename_table(10):='blake'; dbms_output.put_line('第一个元素:'||ename_table.first); dbms_output.put_line('最后一个元素:'||ename_table.last); end;


5.FRIORNEXT:PRIOR 返回当前集合元素的前一个元素的下标 ,NEXT 方法则用于返回当前集合元素的后一个元素的下标

declare type ename_table_type is table of emp.ename%type index by binary_integer; ename_table ename_table_type; begin ename_table(-5):='scott'; ename_table(1):='smith'; ename_table(5):='mary'; ename_table(10):='blake'; dbms_output.put_line('元素5的前一个元素:'||ename_table.prior(5)); dbms_output.put_line('元素5的后一个元素:'||ename_table.next(5)); end;

 

6.EXTEND: 用于扩展集合变量的尺寸 , 并为它们增加元素 . 只适用于嵌套表和 VARRAY.

三种调用格式 :EXTEND,EXTEND(N),EXTEND(N,I): 添加 N 个元素 , 值与第 I 个元素相同

declare type ename_table_type is varray(20) of varchar2(10); ename_table ename_table_type; begin ename_table:=ename_table_type('mary'); ename_table.extend(5,1); dbms_output.put_line('元素个数:'||ename_table.count); end;

 

7.TRIM: 用于从集合尾部删除元素 ,TRIMTRIM(N) 两种调用格式 .

只适用于嵌套表和 VARRAY

declare type ename_table_type is table of varchar2(10); ename_table ename_table_type; begin ename_table:=ename_table_type('a','a','a','a','a'); ename_table.trim(2); dbms_table.put_line('元素个数:'||ename_table.count); end;

 

8.DELETE: 删除结合元素 , 但该方法只适用于嵌套表和索引表 , 不适用于 VARRAY.

DELETE,DELETE(N),DELETE(M,N) 三种调用方式 .

DETELE(M,N) 删除集合变量从 MN 之间的所有元素

declare type ename_table_type is table of emp.ename%type index by binary_integer; ename_table ename_table_type; begin ename_table(-5):='scott'; ename_table(1):='smith'; ename_table(5):='mary'; ename_table(10):='blake'; ename_table.delete(5); dbms_output.put_line('元素总个数:'||ename_table.count); end;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值