我有两个非常大的表,我需要从这些表中处理一个小的结果集。但是,每个处理都是在几个函数中完成的,并且函数必须进行一些连接才能以正确的方式格式化数据。
我肯定需要以某种方式缓存初始结果集,以便功能可以重复使用它。我想做的是将第一个结果集放在一个集合中,将第二个结果集放在另一个集合中,然后通过SQL查询将这些集合当作真实的SQL表进行操作。
您能建议如何做到这一点吗?
您需要创建一个架构级别的类型(不在包内)作为嵌套表。您可以填充它们,然后可以使用“ table()”语句在查询中将它们用作普通表。
该链接说明了您的需求。一个简单的例子
create type foo as table of number;-- or a record type, data%rowtype, whatever ... myfoo1 foo := foo (1,2,3); myfoo2 foo := foo(3,4,5) select column_value into bar from table(foo1) join table(foo2) using (column_value)