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带参数的闭包
定义带参数的闭包:
随机推荐
- windows 7 下安装 vagrant + Oracle VM VirtualBox
一.安装下准备 1.下载Oracle VM VirtualBox https://www.virtualbox.org/wiki/Downloads (VirtualBox-4.3.22-98236 ...
- cocos2d-Lua02Lua面向对象
1 Lua中的面向对象 1.1 问题 lua不是一个面向对象的语言.可是他又有面向对象的思想. lua中的面向对象是伪面向对象.伪面向对象就要用到table实现. 由table模拟了一个面向对象的编程 ...
- 根据map键值对,生成update与select语句,单条执行语句
方法 constructUpdateSQL private static String constructUpdateSQL(String tableName, List<Map<Stri ...
- Tomcat数据源总结
一.数据源的由来 JDBC操作主要由以下几步组成: (1)Class.forName(); (2)Connection con = DriverManager.getConnection(); ...
- Sword redis配置
Redis 配置 Redis 的配置文件位于 Redis 安装目录下,文件名为 redis.conf. --查看配置 你可以通过 CONFIG 命令查看或设置配置项(使用CONFIG必须在redis客 ...
- install ubuntu on Android mobile phone
Android 是基于Linux内核的开源操作系统,主要用在移动设备上.当然同样是基于Linux内核的操作系统,现在支持的Android的智能手机理论来说都能运行基于Linux的操作系统,比如现在流行 ...
- python新模块:secrets模块(为账户密码)
默认我们会使用random模块, 而secrets模块用来产生强加密的随机数, 例如账号认证 import secrets import string characters = string.asci ...
- 超实惠:99元阿里云服务器1核2G内存40G硬盘(SSD)
阿里云推出拼团购服务器活动,99元即可购买阿里云1核2G内存40G硬盘(还是SSD哦)云服务器,赶快加入来拼团吧!阿里云1核2G云服务器ECS:1年99元.2年189元.3年279元! 活动地址 一. ...
- jQuery Validation让验证变得如此easy(二)
上一个样例我们是统一引用jquery.validate.js这样全部必填字段的提示信息都将是This field is required. 如今要改成动态提示,比方姓名假设为空则提示姓名不能为空,密码 ...
- 制作移动端手机网站过程中的SEO优化方法技巧
据国内三大运营商数据来看,中国的手机用户数已达10亿,超过2/5的移动用户每个月都会从手机终端访问网页,如今的移动端手机网站比例肯定有提升,但是对于这些存在的移动版本网站来说,马海祥查看了很大一部分手 ...