2017-03-04 5 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は毎回機能します。私はそれが初めてだけ動作したい。その後、キャッシュから取得する必要があります –