--建立包及包體(之前我僅建立包,未建立包體;且要定義一個存儲過程
--調用dbms_session.set_context配置context的相關參數值
SQL> create or replace package pack_order_date
2 as
3 procedure put(key varchar2,value varchar2);
4 end pack_order_date;
5 /
Package created
SQL> create or replace package body pack_order_date
2 as
3 procedure put(key varchar2,value varchar2)
4 is
5 begin
6 dbms_session.set_context('my_context',key,value);
7 end;
8 end pack_order_date;
9 /
Package body created
--建立了包及包體,然後建立context,注意:此context要位于上述的包中
--且context的名稱要與上述包體存儲過程set_context的my_context一樣
create or replace context my_context using pack_order_date;
--建立基于context的視圖
SQL> create or replace view v_t_limit as select a,end_date from t_limit where end_date=sys_context('my_context','order_date');
View created
--執行包體存儲過程為context屬性order_date指派
SQL> exec pack_order_date.put('order_date','2011');
PL/SQL procedure successfully completed
--查詢視圖,即可實作動化參數化查詢視圖了
SQL> select * from v_t_limit;
A END_DATE
--------------------------------------- ----------------------
2 2011
SQL> select * from t_limit;
A END_DATE
--------------------------------------- ----------------------
1 2013
2 2011
小結:1,sys_context使用,2個參數分别為:context及其屬性
2,context屬性用dbms_session.set_context配置
3,建立包及包體,為context的屬性配置值
4,通過sys_context建立視圖
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-755722/,如需轉載,請注明出處,否則将追究法律責任。
轉載于:http://blog.itpub.net/9240380/viewspace-755722/