Oracle构建传参视图

本文探讨了在Oracle中构建传参视图时如何避免初次查询结果为空的常见问题。通过创建Package传递month_id和org_id参数,并在改进后的视图使用中确保WHERE条件正确应用,从而优化查询性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在构建视图时为了提高SQL的查询性能,有时会通过限定子查询的查询结果数据量的方式实现,若是Oracle数据库可以借用Package的变量来进行视图动态传参查询。网络上有众多介绍该方式的博文,但大多方案在使用时会发现存在第一次连接查询时不传参导致查询结果为空的问题,遂基于该问题进行改进。

  • 首先我们需要构建一个Package用于参数的传递,例如我们需要传递 month_id 月份和 org_id 组织ID两个参数,
/***
包的声明

***/
CREATE OR REPLACE PACKAGE [Schemas]."P_VIEW_PARAM" is   --[Schemas] 替换对应的Schemas

  function set_orgid_param(orgId varchar2) return varchar2;
  function get_orgid_param return varchar2;

  function set_monthid_param(monthid number) return number;
  function get_monthid_param return number;

end p_view_param;
/***
构建包体

***/

CREATE OR REPLACE PACKAGE BODY [Schemas]."P_VIEW_PARAM" as   --[Schemas] 替换对应的Schemas

  paramValue varchar2(50);   --组织ID
  paramValue1 number;        --年月ID
  
  --设置组织ID方法
  function set_orgid_param(orgId varchar2) return varchar2 is
  begin
    paramValue:=orgId;
    return orgId;
  end;

  --获取组织ID方法
  function get_orgid_param return v
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值