1

如何在查询中使用 oracle 流水线功能仅第一次获取数据。

例子:

create or replace function best_employees return my_type pipelined;

select * from employees a 
join table(best_employees) b 
on a.employee_id = b.employee_id;

此查询不止一次调用 best_employees 函数。它必须只在第一次调用。我怎样才能做到这一点。谢谢。

4

1 回答 1

0

虽然您可以将结果存储在类型的包集合中my_type并编写函数以返回它是否包含值而不是重新执行查询,但更简单、更可靠的方法是result_cache在其查询中使用提示。

select /*+ result_cache */ kitten_id, cuteness from kittens where colour = 'BLACK';

(还有一个result_cache函数选项,但不能用于流水线函数。)

于 2017-03-04T14:21:21.577 回答