Arrays 两个嵌套表集合之间的plsql差异

Arrays 两个嵌套表集合之间的plsql差异,arrays,oracle,collections,plsql,nested-table,Arrays,Oracle,Collections,Plsql,Nested Table,我有两个嵌套表类型的PLSQL数组: TYPE nested_typ IS TABLE OF VARCHAR2(21); nt1 nested_typ := nested_typ('abc','def','123'); nt2 nested_typ := nested_typ('123'); 我想知道这两个系列的不同之处,例如:“def”,“abc” 请提出任何简单的方法来做到这一点 谢谢…这些类型很简单,所以您可以使用PL/SQL的集合比较运算符。在您的情况下,您希望使用多集,但除外(其工

我有两个嵌套表类型的PLSQL数组:

TYPE nested_typ IS TABLE OF VARCHAR2(21);

nt1 nested_typ := nested_typ('abc','def','123');
nt2 nested_typ := nested_typ('123');
我想知道这两个系列的不同之处,例如:“def”,“abc”

请提出任何简单的方法来做到这一点


谢谢…

这些类型很简单,所以您可以使用PL/SQL的集合比较运算符。在您的情况下,您希望使用
多集,但
除外(其工作方式与SQL
减号
运算符相同)。给定第三个嵌套表,您可以编写如下代码:

nt3 := nt1 multiset except nt2;



“当数组中没有重复的元素时,这种方法可以正常工作。。。 是否有其他方法可以删除中所有出现的“123” nt1?”

是,使用
multiset,但不使用distinct


有很多收集操作符。正如我们所期望的,PL/SQL文档中包含了它们

基本上,您希望对嵌套表使用减号功能。 在10g中,有一个新功能称为MULTISET,除了。如果要将减号的输出存储在变量中,请执行以下步骤

declare var1 <nested table type>
看看这个

Declare     
  TYPE nested_typ IS TABLE OF VARCHAR2(21); 
  nt1 nested_typ := nested_typ('abc','def','123');     
  nt2 nested_typ := nested_typ('123');    
  nt3 nested_typ;    
Begin
  nt3 := nt1 multiset except nt2; 
  dbms_output.put_line(nt3(1)||' '||nt3(2));  
end;

希望这有帮助

当数组中没有重复的元素时,这种方法可以正常工作。假设以下数据:nt1嵌套类型:=嵌套类型('abc','123','def','123');nt2嵌套的类型:=嵌套的类型('123');,那么nt3:=nt1多集,nt2除外;将导致'abc'、'def'、'123',是否有其他方法可以删除nt1中出现的所有'123'?
Declare     
  TYPE nested_typ IS TABLE OF VARCHAR2(21); 
  nt1 nested_typ := nested_typ('abc','def','123');     
  nt2 nested_typ := nested_typ('123');    
  nt3 nested_typ;    
Begin
  nt3 := nt1 multiset except nt2; 
  dbms_output.put_line(nt3(1)||' '||nt3(2));  
end;