oracle创建可传参视图

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;

oracle创建可传参视图

 

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创建可传参视图