集合方法
1是用于操作集合变量的内置函数或过程
2集合方法只能在PL/SQL中使用,不能再SQL语句中使用
3集合方法extend和trim只适用于嵌套表和varray,不适用与索引表
4exists(),count(),limit(),first(),next(),prior(),last()是函数,extend(),trim(),delete()是过程,都是集合方法

语法
collection_name.method_name{(parameters)}

exists()
确定集合元素释放存在,存在返回true,否则返回false

案例
declare
type sname_table_type is table of student.sname%type;–定义嵌套表类型
sname_table sname_table_type;

begin
if sname_table.exists(1) then
sname_table(1):=’aa’;
else
dbms_output.put_line(‘集合元素必须要初始化’);
end if;
end;

这里写图片描述

count()
返回当前集合变量中元素的总个数

举例
declare
type sname_table_type is table of student.sname%type
index by binary_integer;–定义索引表
sname_table sname_table_type;

begin
sname_table(1):=’aa’;
sname_table(2):=’bb’;
sname_table(3):=’cc’;
sname_table(4):=’dd’;

dbms_output.put_line(‘元素个数’||sname_table.count);
end;

这里写图片描述

limit()
1返回集合元素的最大个数
2因为嵌套表和索引表的元素个数没有限制,所以调用该方法返回null
3对于varray来说,该方法返回varray所允许的最大元素个数
declare
type sname_table_type is varray(20) of student.sname%type;
sname_table sname_table_type;

begin
sname_table:=sname_table_type(‘lia’,’lilib’);
select sname into sname_table(1) from student where sno=’s001’;
select sname into sname_table(2) from student where sno=’s002’;
dbms_output.put_line(sname_table(1)||’———’||sname_table(2));
dbms_output.put_line(‘集合元素最大个数:’||sname_table.limit);
end;
举例
这里写图片描述

extend()
1用于扩展集合变量的尺寸,并未集合添加元素
2该方法只适用于嵌套表和索引表。
3extend的调用格式
1)extend:用于为集合变量添加一个null元素
2)extend(n):为集合变量添加n个null元素
3)extend(n,i)为集合添加n个null元素,元素值与第i个元素相同

举例
declare
type sname_table_type is varray(20) of student.sname%type;–可变数组
sname_table sname_table_type;

begin
sname_table:=sname_table_type(‘lia’,’lilib’);
sname_table.extend(5,2);–为集合添加2个元素,元素值与第二个元素相同
dbms_output.put_line(sname_table(1));
dbms_output.put_line(sname_table(2));
dbms_output.put_line(sname_table(3));
dbms_output.put_line(sname_table(4));
end;
这里写图片描述

trim()
1方法适用于从集合尾部删除元素
2trim的调用格式
1)trim:用于从集合尾部删除一个元素
2)trim(n):用于从集合尾部删除n个元素

举例
declare
type sname_table_type is varray(20) of student.sname%type;–可变数组
sname_table sname_table_type;

begin
sname_table:=sname_table_type(‘lia’,’lilib’,’lilic’,’lilid’);
dbms_output.put_line(‘集合元素个数:’||sname_table.count);
sname_table.trim(2);–为集合删除尾部2个元素,
dbms_output.put_line(‘集合元素个数:’||sname_table.count);
end;
这里写图片描述

first()
返回集合变量第一个元素的下标
last()
返回集合变量最后一个元素的下标
prior()
返回当前集合变量前一个元素的下标
next()
返回当前集合变量下一个元素的下标

举例

declare
type sname_table_type is table of student.sname%type
index by binary_integer;–定义索引表
sname_table sname_table_type;

begin
sname_table(1):=’aa’;
sname_table(2):=’bb’;
sname_table(3):=’cc’;
sname_table(4):=’dd’;

dbms_output.put_line(‘第一个元素’||sname_table.first);
dbms_output.put_line(‘最后一个元素’||sname_table.last);
dbms_output.put_line(‘第二个元素前一个元素’||sname_table.prior(2));
dbms_output.put_line(‘第二个元素后一个元素’||sname_table.next(2));
end;
这里写图片描述

delete()
1该方法只适用于嵌套表和索引表,不适用于varray
2delete的调用格式
1)delete:删除集合变量的所有元素
2)delete(n):删除集合变量的第n个元素
3)delete(n,m):删除集合变量从n到m之间的所有元素

案例
declare
type sname_table_type is table of student.sname%type
index by binary_integer;–定义索引表
sname_table sname_table_type;

begin
sname_table(1):=’aa’;
sname_table(2):=’bb’;
sname_table(3):=’cc’;
sname_table(4):=’dd’;
sname_table.DELETE(2,4);
dbms_output.put_line(‘集合元素个数:’||sname_table.count);
end;
这里写图片描述

posted on 2017-05-23 11:08  2637282556  阅读(158)  评论(0编辑  收藏  举报