您的位置:首页 > 数据库 > Oracle

oracle创建可传参视图

2015-11-24 11:03 701 查看
测试表:

create table AM_TEST
(
id     NUMBER(10) not null,
name   VARCHAR2(20),
email  VARCHAR2(20),
remark VARCHAR2(20),
age    NUMBER
)

comment on table AM_TEST
is '测试表';
comment on column AM_TEST.id
is '唯一标识';
comment on column AM_TEST.name
is '姓名';
comment on column AM_TEST.email
is '邮箱';
comment on column AM_TEST.remark
is '备注';
comment on column AM_TEST.age
is '年龄';

commit;

insert into AM_TEST (id, name, email, remark, age)
values (1, 'a', null, null, 1);
insert into AM_TEST (id, name, email, remark, age)
values (2, 'b', null, null, 2);
insert into AM_TEST (id, name, email, remark, age)
values (3, 'c', null, null, 3);
insert into AM_TEST (id, name, email, remark, age)
values (4, 'd', null, null, 4);
insert into AM_TEST (id, name, email, remark, age)
values (5, 'e', null, null, 5);
commit;




存储过程:

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

param_value number;

function set_param(num number) return number is
begin
param_value := num;
return num;
end;

function get_param return number is
begin
return param_value;
end;

end p_view_param;


视图:

create or replace view p_view_user as
select t.id, t.age*p_view_param.get_param() d_age from am_test t where id = p_view_param.get_param();


使用:

select * from P_VIEW_USER t where p_view_param.set_param(2) = 2;


结果:



总结:

可传参视图主要是利用oracle存储过程来作为参数传递的介质,相当于定义了一个全局变量,在查询的时候设置参数,在视图中获取参数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  oracle