动态创建VIEW

本文介绍如何利用PACKAGE创建动态VIEW,实现SQL查询条件的动态化和SESSION特性,提升查询灵活性与效率。

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

很多人都应该知道 global temporary table 的用法,这里也提出一个动态VIEW的用法,在实际过程中有着很好的独特之处

具体如下:

/***************创建PACKAGE ****************/

create or replace package p_view_temp_value is

g_org_id varchar2(60);

g_product_number varchar2(60);

g_dep_id varchar2(60);

procedure set_org_id(l_orgid varchar2,l_product_number varchar2,l_dept varchar2);

function get_id  return varchar2;

function get_product  return varchar2;

function get_dep_id  return varchar2;

end p_view_temp_value;

/***************创建PACKAGE ****************/

create or replace package body p_view_temp_value Is

procedure set_org_id(l_orgid varchar2,l_product_number varchar2,l_dept varchar2) is

begin

g_org_id:=l_orgid;

g_product_number:=l_product_number;

g_dep_id:=l_dept;

end;

function get_id  return varchar2  is

v_value varchar2(60);

begin

v_value:=g_org_id;

return v_value;

end;

function get_dep_id  return varchar2  is

v_value varchar2(60);

begin

v_value:=g_dep_id;

return v_value;

end;

function get_product  return varchar2  is

v_value varchar2(60);

begin

v_value:=g_product_number;

return v_value;

end;

end p_view_temp_value;

/****************创建动态视图******************/

create or replace view view_demo

(org_id,.....)

as

select   org_id,......

from t_org_info where org_id=p_view_temp_value.get_id

;

注意此处的条件是利用PACKAGE的函数,这样可以达到条件的动态化,而且利用的PACK的特点,使这个试图的条件具有SESSION特性,

在执行此VIEW查询的时候,需要先执行 p_view_temp_value.set_org_id('001','','');

这样视图V_DEMO查询的就是   select org_id ... from t_org_info where org_id='001';

而且必须是在一个SESSION里,不同的SESSION查询出来的是不一样的,这也就说明了他的动态性,只要在不同的SESSION里就具有不同的结果集,这个特点跟GLOBAL TEMPORARY TABLE很类似

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值