2017-03-04 37 views
0

如何才能在查詢時使用oracle流水線功能來第一次獲取數據。帶緩存的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功能超過一次。它只能第一次打電話。 我該如何做到這一點。謝謝。

回答

0

雖然你可以存儲在my_type類型的包集合的結果,並寫回,如果它包含的值,而不是重新執行查詢的功能,更簡單和更可靠的方法是使用result_cache一絲其查詢。

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

(還有一個result_cache option for functions,但它不能用於流水線的功能。)

+0

這是行不通的。函數每次都在工作 –

+0

所以它「不工作」或「工作」,這些術語是什麼意思?每次調用函數時都會執行該函數。 'result_cache'提示是緩存SQL中的結果。 –

+0

best_employees函數每次工作。我希望它只能第一次使用。然後它必須從緩存中取出 –