WEB开发网
开发学院数据库Oracle Oracle10g中新的多重集运算符解析 阅读

Oracle10g中新的多重集运算符解析

 2007-05-09 12:11:49 来源:WEB开发网   
核心提示:Oracle 10g 中针对 SQL Server 2003 新添加了一系列支持 Advanced Multiset 的运算符,他们可以用于对 Oracle 数据库中的嵌套表进行处理,Oracle10g中新的多重集运算符解析,这个SQL 新语法具有强大的功能,并弥补了 Oracle 8i中对于嵌套表的不足之处,那么如果

Oracle 10g 中针对 SQL Server 2003 新添加了一系列支持 Advanced Multiset 的运算符,他们可以用于对 Oracle 数据库中的嵌套表进行处理。这个SQL 新语法具有强大的功能,并弥补了 Oracle 8i中对于嵌套表的不足之处。但是用户手册中给出的相关例子非常复杂,很难了解到这些新函数的使用方法。

下面举个非常简单的例子来说明一下,假设我们要使用一个记录了整型数据的嵌套表。在创建嵌套表时,首先必须为将要创建的表指定一个表名,这个表将用来存放嵌套表的数据。create or replace type num_tab_typ as table of number;
/
create table num_tab (num num_tab_typ)
nested table num store as num_tab_store;

然后往表中插入一些数列,这些数列分别为从1到5的数字,以及一些奇数数字和偶数数字。然后对其进行查询:

insert into num_tab values (num_tab_typ(1,2,3,4,5));
insert into num_tab values (num_tab_typ(1,3,5));
insert into num_tab values (num_tab_typ(2,4,6));
select num from num_tab;

NUM

--------------------------

NUM_TAB_TYP(1, 2, 3, 4, 5)

NUM_TAB_TYP(1, 3, 5)

NUM_TAB_TYP(2, 4, 6)

多重集运算符 EXCEPT 可以实现查询中查询出不包含于另一个嵌套表的所有的值。 例如在下面这个例子中,查询语句可以查出在嵌套表中除了1以外其他所有的值:

select num multiset except num_tab_typ(1) num from num_tab;

NUM

--------------------------

NUM_TAB_TYP(2, 3, 4, 5)

NUM_TAB_TYP(3, 5)

NUM_TAB_TYP(2, 4, 6)

多重集运算符INTERSECT 则是与 Except 相反,它可以返回在两个嵌套表中相同的值。那么,如果使用一个嵌套表,表中只有一个数字“1”,那么如果在原来的嵌套表中没有“1”则返回的结果为一个空集,但是如原来的嵌套表中确实存在“1”,那么返回的结果就是“1”,如下面的例子所示:

1 2 3  下一页

Tags:Oracleg 中新 多重

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接