다음 스크립트를 고려하십시오.
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
*/
f(x)
10.2에서 실행 된이 테스트 케이스에서와 같이 뷰 내에서 컨텍스트를 읽기 전에 실행 에 의존 할 수 있습니까 ?
SELECT stuff FROM dbo.FuncReturningTable(param)
. 오라클은 아마도 동등한 기능을 가지고 있습니다. 대용량 데이터 세트에서 이것을 사용하는 경우 성능을 모니터 할 때주의해야합니다. 쿼리 플래너가 그러한 구문에서 효율적인 계획을 세우는 데 얼마나 밝은 지 확신 할 수 없습니다.