您的位置:首页 > 其它

集合方法+exists()+count()+limit()+extend()+trim()+first()+last()+prior()+next()+delete()

2017-05-23 11:08 295 查看
集合方法

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;

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐