oracle 定义带参数的视图
1、定义包
CREATE OR REPLACE package p_view_param is
--定义开始日期--
function set_beginTime(beginTime varchar2) return varchar2;
function get_beginTime return varchar2;
--定义结束日期--
function set_endTime(endTime varchar2) return varchar2;
function get_endTime return varchar2; end p_view_param;
/
2、定义包体
create or replace package body p_view_param is
parambeginTime varchar2(20);
paramendTime varchar2(20);
-- Param
function set_beginTime(beginTime varchar2) return varchar2 is
begin
parambeginTime:=beginTime;
return beginTime;
end; function get_beginTime return varchar2 is
begin
return parambeginTime;
end;
-- Type
function set_endTime(endTime varchar2) return varchar2 is
begin
paramendTime:=endTime;
return endTime;
end; function get_endTime return varchar2 is
begin
return paramendTime;
end; end p_view_param;
3、定义参数视图
create or replace view p_view_num as
select mxmc,max(xssl) as xssl,max(mwje) as mwje,max(qtje) as qtje,max(mwje +nvl(qtje,0)) as hjje ,round((max(mwje)+max(nvl(qtje,0)))/max(xssl),2) as pjje, max(mwzs) as mwzs,max(mwye) as mwye,max(azyw) as azyw,max(qcyw) as qcyw from
(
select mxmc
, (select count(*) from ywdjb where t1.mxmc=mxmc and to_char(rq,'yyyy-mm-dd')>=p_view_param.get_beginTime() and to_char(rq,'yyyy-mm-dd')<=p_view_param.get_endTime() ) as xssl --销售数量
,(select sum(fyb_mx.ssje) from fyb_mx ,ywdjb, fmdm where ywdjb.djh=fyb_mx.ywdjh and fmdm.FMDM=fyb_mx.fmdm and ywdjb.mxmc=t1.mxmc and fyb_mx.zxflag=''
and to_char(ywdjb.rq,'yyyy-mm-dd')>=p_view_param.get_beginTime() and to_char(ywdjb.rq,'yyyy-mm-dd')<=p_view_param.get_endTime() and fmdm.mwje_flag='' ) as mwje -- 墓位金额
,(select sum(fyb_mx.ssje) from fyb_mx ,ywdjb, fmdm where ywdjb.djh=fyb_mx.ywdjh and fmdm.FMDM=fyb_mx.fmdm and ywdjb.mxmc=t1.mxmc and fyb_mx.zxflag=''
and to_char(ywdjb.rq,'yyyy-mm-dd')>=p_view_param.get_beginTime() and to_char(ywdjb.rq,'yyyy-mm-dd')<=p_view_param.get_endTime() and (fmdm.mwje_flag<>'' or fmdm.mwje_flag is null) ) as qtje -- 其他金额
, (select count(*) from mwdmxx where mxdmmc=t1.mxmc) as mwzs --墓位总数
, (select count(*) from mwdmxx where mxdmmc=t1.mxmc and mwzt='') as mwye --待售墓位数量
, ( select count(*) from wrxxb,ywdjb where ywdjb.mxmc=t1.mxmc and wrxxb.djh=ywdjb.djh and to_char(azrq,'yyyy-mm-dd')>=p_view_param.get_beginTime() and to_char(azrq,'yyyy-mm-dd')<=p_view_param.get_endTime() ) as azyw -- 安葬数量
, ( select count(*) from qtywb where qtywb.mxmc=t1.mxmc and ywdm='' and azfsdm='' and to_char(rq,'yyyy-mm-dd')>=p_view_param.get_beginTime() and to_char(rq,'yyyy-mm-dd')<=p_view_param.get_endTime() ) as qcyw -- 迁出数量
from
(
select distinct mxmc from ywdjb
where azfsdm='' and to_char(rq,'yyyy-mm-dd')>=p_view_param.get_beginTime() and to_char(rq,'yyyy-mm-dd')<=p_view_param.get_endTime() and zxflag<>''
) t1 ) group by mxmc
union all --加入退墓和迁出
select mxmc,max(xssl) as xssl,max(mwje) as mwje,max(qtje) as qtje,max(mwje +nvl(qtje,0)) as hjje ,0 as pjje, max(mwzs) as mwzs,max(mwye) as mwye,max(azyw) as azyw,max(qcyw) as qcyw from
(
select mxmc
, (select count(*) from qtywb where t1.mxmc=mxmc and to_char(rq,'yyyy-mm-dd')>=p_view_param.get_beginTime() and to_char(rq,'yyyy-mm-dd')<=p_view_param.get_endTime() and (ywdm='' or ywdm='') ) * -1 as xssl --销售数量
,(select sum(fyb_mx.ssje) from fyb_mx ,qtywb, fmdm where qtywb.ywdjh=fyb_mx.ywdjh and fmdm.FMDM=fyb_mx.fmdm and qtywb.mxmc=t1.mxmc and fyb_mx.zxflag=''
and to_char(qtywb.rq,'yyyy-mm-dd')>=p_view_param.get_beginTime() and to_char(qtywb.rq,'yyyy-mm-dd')<=p_view_param.get_endTime() and fmdm.mwje_flag='' and (qtywb.ywdm='' or qtywb.ywdm='') ) as mwje -- 墓位金额
,(select sum(fyb_mx.ssje) from fyb_mx ,qtywb, fmdm where qtywb.ywdjh=fyb_mx.ywdjh and fmdm.FMDM=fyb_mx.fmdm and qtywb.mxmc=t1.mxmc and fyb_mx.zxflag=''
and to_char(qtywb.rq,'yyyy-mm-dd')>=p_view_param.get_beginTime() and to_char(qtywb.rq,'yyyy-mm-dd')<=p_view_param.get_endTime() and (fmdm.mwje_flag<>'' or fmdm.mwje_flag is null) and (qtywb.ywdm='' or qtywb.ywdm='') ) as qtje -- 其他金额
, 0 as mwzs --墓位总数
, 0 as mwye --待售墓位数量
, 0 as azyw -- 安葬数量
, 0 as qcyw -- 迁出数量
from
(
select distinct mxmc from qtywb
where azfsdm='' and to_char(rq,'yyyy-mm-dd')>=p_view_param.get_beginTime() and to_char(rq,'yyyy-mm-dd')<=p_view_param.get_endTime() and zxflag<>'' and (ywdm='' or ywdm='')
) t1
) group by mxmc order by mxmc
查询方法:
SELECT * FROM p_view_num WHERE p_view_param.set_beginTime('2017-01-01')='2017-01-01' and p_view_param.set_endTime('2017-05-01')='2017-05-01'
oracle 定义带参数的视图的更多相关文章
- Oracle游标带参数
Oracle游标是可以带参数的,而SqlServer的游标就不可以了 create or replace procedure a as cursor b(c_id int)is select * fr ...
- spring配置带参数的视图解析器:ParameterMethodNameResolver
1.配置处理器 <!-- 处理器 --> <bean id="myController" class="cn.cnsdhzzl.controller.M ...
- oracle存储过程(带参数的存储过程)
带参数的存储过程 举例:为指定的员工涨100元的工资,打印涨前和涨后的工资 如果带参,需要指定是输入参数还是输出参数 create or replace procedure raisesalary(e ...
- Oracle中的带参数的视图--我们致力于打造人力资源软件
创建包和包体 create or replace package pkg_pv is procedure set_pv(pv varchar2); function get_pv return var ...
- python_如何定义带参数的装饰器?
案例: 实现一个装饰器,用它来检查被装饰函数的参数类型. 需求: 装饰器可以通过函数,指明函数参数类型,进行函数调用的时候,传入参数,检测到不匹配时,抛出异常 如何解决这个问题? 先要获取函数的签名, ...
- 带参数的URLconf
我们在Django建立helloworld自定义页面创建的页面,只能算是一个静态页,发起一个请求,返回一个固定的值,并不能满足我们动态的需求.今天我们创建一个带参数的URLconf,根据参数展示不同的 ...
- Java 第13章 带参数的方法
带参数的方法 无参方法有那几个组成部分? 调用无参方法的两种形式是什么? 第一种:同一个类中的方法调用 直接用方法名 show(): 第二种:不同类中的方法调用 -->对象实例化 -->对 ...
- Python带参数的装饰器
在装饰器函数里传入参数 # -*- coding: utf-8 -*- # 2017/12/2 21:38 # 这不是什么黑魔法,你只需要让包装器传递参数: def a_decorator_passi ...
- Grovvy带参数的闭包
定义带参数的闭包:
随机推荐
- 调用cmd.exe执行pdf的合并(pdftk.exe)
今天调查一个pdf文件的抽取,合并功能,用到下面这个工具(pdftk): https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/ 在cmd.exe里执 ...
- input 数字输入控制(含小数)
1,可以在keypress里验证输入的字符的合法性. // 数字控件的入力控制 $("input.comma,input.comma1,input.comma2").keypres ...
- Android文档 - 账户管理器概述
账户管理器概述 这个类提供了访问到 用户在线账户的集中式注册中心 的能力.用户为每账户输入一次 认证信息(credentials,包含用户名和密码),过过 点击一次(one-click)完成认证的方式 ...
- 安卓程序代写 网上程序代写[原]自定义View
一. 自定义View介绍 自定义View时, 继承View基类, 并实现其中的一些方法. (1) ~ (2) 方法与构造相关 (3) ~ (5) 方法与组件大小位置相关 (6) ~ (9) 方法与触摸 ...
- Python 类的初见
#定义一个Python类 class Cat: #self关键字相当于c++类中的this指针 def eat(self): print("i am eating .") def ...
- Ubuntu下允许Root用户的操作 (图形界面登录、su切换……)
Ubuntu安装后,root用户默认是被锁定了的,不允许登录,也不允许“su”到 root.虽然这样的设置使安全性更高一些,但对于开发者来 说就显得很不方便了.如何让Ubuntu允许root用户直接登 ...
- python numpy访问行列元素的方法
import numpy as np a = np.array([[2,1],[10,5]]) print(a) print(a[:,1])#col 1 print(a[1])#row 1 print ...
- C# HttpClient请求
using Newtonsoft.Json; using System; using System.Collections.Generic; using System.IO; using System ...
- vegan 包进行 Bioenv 分析
Bioenv 分析通过 计算样本群落结构的距离矩阵和 环境因子的距离矩阵,计算两个距离之间的相关系数,挑选出最佳的环境因子组合: 默认情况下,计算 群落结构的距离矩阵时, 使用 Bray-Curtis ...
- C# 一个多层循环中,break一次能跳出几个循环?
public class BreakTest { public static void main(String[] args) { ; x<; x++) { ; y<; y++) { ; ...