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;

这里写图片描述
存储过程:

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存储过程来作为参数传递的介质,相当于定义了一个全局变量,在查询的时候设置参数,在视图中获取参数。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值