โปรดพิจารณาสคริปต์ต่อไปนี้:
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)
หรือคล้ายกัน Oracle อาจมีฟังก์ชันการทำงานที่เทียบเท่า แม้ว่าการใช้สิ่งนี้กับชุดข้อมูลขนาดใหญ่ฉันควรระมัดระวังในการตรวจสอบประสิทธิภาพ: ฉันไม่แน่ใจว่าตัววางแผนคิวรีจะต้องมีความสว่างเพียงใดในการวางแผนอย่างมีประสิทธิภาพจากไวยากรณ์ดังกล่าว