ITPub博客

首页 > Linux操作系统 > Linux操作系统 > oracle sys_context与dbms_session.set_context实现view动态查询

oracle sys_context与dbms_session.set_context实现view动态查询

原创 Linux操作系统 作者:wisdomone1 时间:2013-03-11 11:37:40 0 删除 编辑

--创建包及包体(之前我仅创建包,未创建包体;且要定义一个存储过程
--调用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博客 ” ,链接:https://blog.itpub.net/9240380/viewspace-755722/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
提供针对oracle初学者及进阶的数据库培训,欢迎大家咨询: 微信: wisdomone 微信公众号: lovedb 工作经历: 中国普天 北京科蓝 北京云和恩墨 北京神州新桥

注册时间:2008-04-04

  • 博文量
    2189
  • 访问量
    12686957