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

Sek*_*har 3 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');
Run Code Online (Sandbox Code Playgroud)

我希望得到这两个系列的区别,对于上面的Ex:'def','abc'

请建议任何简单的方法来做到这一点?

谢谢...

APC*_*APC 5

这些是简单类型,因此您可以使用PL/SQL的集合比较运算符.在您的情况下,您想要使用MULTISET EXCEPT(与SQL MINUS运算符的工作方式相同).给定第三个嵌套表,您将编写如下代码:

nt3 := nt1 multiset except nt2;
Run Code Online (Sandbox Code Playgroud)

了解更多.


"当数组中没有重复的元素时,这样可以正常工作......有没有其他方法可以删除nt1中所有出现的'123'?"

是的,使用multiset except distinct.

有很多收集运营商.正如我们所期望的那样,它们包含在PL/SQL文档中. 在这里找到它.