Oracle的视图不支持参数
这里有一个另类的方法,不是很好,但是还是一种解决方案
通过package实现
create or replace package pkg_pv is
procedure set_pv(pv varchar2);
function get_pv return varchar2;
end;
create or replace package body pkg_pv is
v varchar2(20);
procedure set_pv(pv varchar2) is begin v:=pv; end;
function get_pv return varchar2 is begin return v; end;
end;
创建带参视图
create view v_emp as select * from emp where ename=pkg_pv.get_pv();
调用过程,结果正确执行
begin
pkg_pv.setpv('scotte');
end;
select * from v_emp;
按照此方法我们可以把通过包的形式来创建一个系统变量,通过在运行时设置其值。来获得对一些需要在运行时有不同值需求的业务处理作一些更简化的处理。本例中我们甚至可以在包体里面它设一个初始值,如果不单独设置时,就采用初值。这样就可以获得更大的灵活性
这里有一个另类的方法,不是很好,但是还是一种解决方案
通过package实现
create or replace package pkg_pv is
procedure set_pv(pv varchar2);
function get_pv return varchar2;
end;
create or replace package body pkg_pv is
v varchar2(20);
procedure set_pv(pv varchar2) is begin v:=pv; end;
function get_pv return varchar2 is begin return v; end;
end;
创建带参视图
create view v_emp as select * from emp where ename=pkg_pv.get_pv();
调用过程,结果正确执行
begin
pkg_pv.setpv('scotte');
end;
select * from v_emp;
按照此方法我们可以把通过包的形式来创建一个系统变量,通过在运行时设置其值。来获得对一些需要在运行时有不同值需求的业务处理作一些更简化的处理。本例中我们甚至可以在包体里面它设一个初始值,如果不单独设置时,就采用初值。这样就可以获得更大的灵活性
- 提供Oracle管理/故障处理/优化/安装/RAC/备份恢复技术服务,提供专业的Oracle培训和咨询服务。
- 邮件: inthirties@gmail.com
- MSN: inthirties@hotmail.com
- QQ: inthirties@qq.com
- 专业论坛 http://www.inthirties.com
- 技术博客 http://blog.csdn.net/inthirties
- 个人站点 http://blog.inthirties.com