Silakan pertimbangkan skrip berikut:
create or replace function f(p_limit in integer) return integer as
begin
set_global_context ('limit', p_limit);
return p_limit;
end;
/
create view v as
select level as val from dual connect by level<=sys_context('global_context','limit');
select f(2), v.* from v;
/*
F(2) VAL
---------------------- ----------------------
2 1
2 2
*/
select f(4), v.* from v;
/*
F(4) VAL
---------------------- ----------------------
4 1
4 2
4 3
4 4
*/
Dapatkah saya mengandalkan f(x)dieksekusi sebelum konteksnya dibaca di dalam tampilan, seperti yang telah dalam pengujian ini dijalankan pada 10.2?
SELECT stuff FROM dbo.FuncReturningTable(param)atau serupa. Oracle mungkin memiliki fungsi yang setara. Meskipun jika menggunakan ini pada set data besar saya akan berhati-hati untuk memantau kinerja: Saya tidak yakin seberapa cerah perencana kueri perlu membuat rencana yang efisien dari sintaksis seperti itu.