oracle:集合(二)

在PL/SQL中使用集合

1.PL/SQL集合方法
方法说明
count()返回集合中元素的数目,嵌套表中有可能有空数据,所以返回的是非空元素数据
delete()删除集合中的元素,delete():删除所有元素,delete(n):删除第n个元素,delete(n,m):删除第n到m个元素,变长数组是连续的,所以不能删除单个元素。
exists()如果集合的第n个元素存在,返回true。
extend()在集合的末尾添加元素
first()返回集合中第一个元素的索引。
last()返回集合中最后一个元素的索引。
limit()对于嵌套表,如果没有生命大小,则返回为空。对于变长数组,返回变长数组可以包含的元素的最大数目。
next()返回n后面的元素的索引
prior()返回n前面的元素的索引。
trim()删除集合末尾的元素

创建和使用多级集合

1.使用多级集合
create type t_varray_phone as varray(3) of varchar2(14);
create type t_address as object (
    street varchar2(15),
    city varchar2(15),
    state char(2),
    zip varchar2(5),
    phone_number t_varray_address
);
create type t_nested_table_address as table of t_address;
create table customer_with_nested_tabel (
    id integer primary key,
    first_name varchar(10),
    last_name varchar(10),
    addresses t_nested_table_address
)
nested table
    addresses
store as
    nested_addresses;

Oracle Database 10g对集合的增强

1.关联数据
create procedure customers_associative_array as
    type t_assoc_array is table of number index by varchar2(15);
    v_customer_array t_assoc_array;
begin
    v_customer_array('jason') := 32,
    v_customer_array('zoey') := 28;

    dbms_output.put_line(v_customer_array('jason'));
    dbms_output.put_line(v_customer_array('zoey'));
end customers_associative_array;
2.更改元素类型的大小
alter type t_varray_address
modify element type varchar2(60) cascade;
3.增加变长数组中元素的个数
alter type t_varray_address
modify limit 5 cascade;
4.为嵌套表的存储表使用不同的表空间
create table cust_with_nested_tabel (
    id integer primary key,
    first_name varchar(10),
    last_name varchar(10),
    addresses t_nested_table_address
)
nested table
    addresses
store as
    nested_addresses tablespace users;
5.嵌套表对ANSI的支持
操作符说明
=和<>比较两个嵌套表: 1. 两个表的类型相同 2. 两个表的基数相同 3. 两个表的所有元素的值相等
in和not in检查一个嵌套表是否出现在另一个嵌套表中
submultiset of检查一个嵌套表的元素是否是另一个嵌套表的子集
multiset intersect两个嵌套表的元素的共有元素
multiset union两个嵌套表的元素之和
multiset except第一个嵌套表有而第二个嵌套表中没有的元素
all所有元素都返回
distinct只有非重复元素才在返回的嵌套表中。
member of检查嵌套表的元素是否存在
is a set检查嵌套表中的元素是否是各不相同的
is empty检查嵌套表是否不包含任何元素
函数:
函数说明
cardinality()返回集合中元素的数目。
set()首先将嵌套表转换为集合,然后染出集合中的重复元素,最后将集合作为嵌套表返回。
powermultiset()返回给定嵌套表中元素的所有集合
powermultiset_by_cardinality()返回给定嵌套表中元素的某些集合,这些组合都具有特定的元素数量。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值