在Oracle中创建带参数的视图

本文介绍如何通过创建包和包体,在Oracle中实现视图参数化,以动态设置where条件进行复杂查询。

1.通常oracle的视图是不能带参数的,但有时候可以通过变通来实现。比如创建了一个视图

CREATE OR REPLACE VIEW REVENUE_STATISTICS AS
SELECT *  FROM A

2.如果需要给定where条件 where a.year='2014',这时候可以通过创建包和包体来实现设置和传递参数

//创建包

create or replace package p_view_param is

  function set_param(num number) return number;

  function get_param return number;

end p_view_param;

//创建包体

create or replace package body p_view_param is

paramValue number;

function set_param(num number) return number is

begin

paramValue := num;

return num;

end;

function get_param return number is

begin

return paramValue;

end;

end p_view_param;

 

3.然后修改视图语句

CREATE OR REPLACE VIEW REVENUE_STATISTICS AS
SELECT *  FROM A  WHERE A.YEAR = p_view_param.get_param()

4.调用slq语句

SELECT * FROM REVENUE_STATISTICS WHERE P_VIEW_PARAM.SET_PARAM(2014)=2014

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值