oracle:集合(二)

来源:互联网 发布:我的祖国 知乎 编辑:程序博客网 时间:2024/05/17 22:15

在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    addressesstore 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_addressmodify element type varchar2(60) cascade;

3.增加变长数组中元素的个数

alter type t_varray_addressmodify 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    addressesstore 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() 返回给定嵌套表中元素的某些集合,这些组合都具有特定的元素数量。
原创粉丝点击