常用函数--不同时间粒度循环取数之Sp_Utl_PrepareData
来源:互联网 发布:挂历制作软件 编辑:程序博客网 时间:2024/05/01 05:25
CREATE OR REPLACE FUNCTION sp_Utl_PrepareData(
iBeginTime DATE, -- 输入起始时间
iEndTime DATE, -- 输入结束时间
iAdmBeginTime DATE, -- 输入偏移开始时间
iAdmEndTime DATE, -- 输入偏移结束时间
iTimeSectFlag INTEGER, -- 步长
oBeginTime OUT DATE, -- 输出起始时间
oEndTime OUT DATE, -- 输出结束时间
oAdmBeginTime OUT DATE, -- 输出偏移开始时间
oAdmEndTime OUT DATE -- 输出偏移结束时间
) RETURN INTEGER
AS
tBeginDate DATE; -- 格式化后查询起始日期
tEndDate DATE; -- 格式化后查询结束日期
iRet INTEGER;
DATA_ERROR EXCEPTION; -- 数据非法
BEGIN
-- 检查是否存在输入日期参数
IF (iBeginTime IS NULL) OR (iEndTime IS NULL) THEN
RAISE DATA_ERROR;
END IF;
-- 格式化时间
iRet := sp_Utl_FormatTime(iBeginTime, iEndTime, iAdmBeginTime, iAdmEndTime, iTimeSectFlag, tBeginDate, tEndDate, oAdmBeginTime, oAdmEndTime);
IF iRet <> 0 THEN
RAISE DATA_ERROR;
END IF;
-- 制定数据边界
IF sp_Utl_ComboTime(tBeginDate, oAdmBeginTime, oAdmEndTime, iTimeSectFlag, 0 , oBeginTime) = 1 THEN
RETURN 1;
END IF;
IF sp_Utl_ComboTime(tEndDate, oAdmBeginTime, oAdmEndTime, iTimeSectFlag, 1 , oEndTime) = 1 THEN
RETURN 1;
END IF;
-- 不统计结束日期所在的那天
IF iTimeSectFlag = 3 THEN
oEndTime := oEndTime - 1;
END IF;
RETURN 0;
EXCEPTION
WHEN DATA_ERROR THEN
RETURN 2;
WHEN OTHERS THEN
RETURN 1;
END;
iBeginTime DATE, -- 输入起始时间
iEndTime DATE, -- 输入结束时间
iAdmBeginTime DATE, -- 输入偏移开始时间
iAdmEndTime DATE, -- 输入偏移结束时间
iTimeSectFlag INTEGER, -- 步长
oBeginTime OUT DATE, -- 输出起始时间
oEndTime OUT DATE, -- 输出结束时间
oAdmBeginTime OUT DATE, -- 输出偏移开始时间
oAdmEndTime OUT DATE -- 输出偏移结束时间
) RETURN INTEGER
AS
tBeginDate DATE; -- 格式化后查询起始日期
tEndDate DATE; -- 格式化后查询结束日期
iRet INTEGER;
DATA_ERROR EXCEPTION; -- 数据非法
BEGIN
-- 检查是否存在输入日期参数
IF (iBeginTime IS NULL) OR (iEndTime IS NULL) THEN
RAISE DATA_ERROR;
END IF;
-- 格式化时间
iRet := sp_Utl_FormatTime(iBeginTime, iEndTime, iAdmBeginTime, iAdmEndTime, iTimeSectFlag, tBeginDate, tEndDate, oAdmBeginTime, oAdmEndTime);
IF iRet <> 0 THEN
RAISE DATA_ERROR;
END IF;
-- 制定数据边界
IF sp_Utl_ComboTime(tBeginDate, oAdmBeginTime, oAdmEndTime, iTimeSectFlag, 0 , oBeginTime) = 1 THEN
RETURN 1;
END IF;
IF sp_Utl_ComboTime(tEndDate, oAdmBeginTime, oAdmEndTime, iTimeSectFlag, 1 , oEndTime) = 1 THEN
RETURN 1;
END IF;
-- 不统计结束日期所在的那天
IF iTimeSectFlag = 3 THEN
oEndTime := oEndTime - 1;
END IF;
RETURN 0;
EXCEPTION
WHEN DATA_ERROR THEN
RETURN 2;
WHEN OTHERS THEN
RETURN 1;
END;
0 0
- 常用函数--不同时间粒度循环取数之Sp_Utl_PrepareData
- 常用函数--不同时间粒度循环取数之sp_Utl_CalculateTimeBorder
- 常用函数--不同时间粒度循环取数之sp_Utl_ComboTime
- 常用函数--不同时间粒度循环取数
- 不同时间粒度下的数据处理action
- oracle 根据时间粒度统计记录数
- MySQL各种时间取数函数
- MySql函数之根据时间取数据
- SQL 取两时间之差和常用时间格式
- FOR循环、游标、时间值函 数、转换函数题目
- <mysql>自定义函数:时间粒度统计的除数(按月)
- mysql函数之常用时间函数
- MySQL常用函数之日期时间函数
- sql处理技巧之--按指定时间粒度汇总数据
- SQL 取时间函数
- 取时间 做随即数
- SQL之常用时间函数练习
- 函数的粒度
- jQuery右键菜单插件 jQuery ContextMenu
- Dirichlet Process Gaussian Mixture Models
- ecshop订单表结构ecs_order_goods说明
- 【五】 Chrome的插件模型
- JAVA三大框架SSH和MVC
- 常用函数--不同时间粒度循环取数之Sp_Utl_PrepareData
- Android首次进入应用时加载引导界面
- 想知道spring事务管理和任务调度的详细配置吗?
- Activity四种启动模式
- jquery.uploadify.3.2.1 试用在IE9,IE10中 上传文件的按钮会无法点击
- css一些有效特性
- hibernate带连接池配置参数的 hibernate.cfg.xml配置文件
- 什么是影响日活/月活的因素?先天决定论vs.后天培养论
- 一次read()系统调用在内核中的处理过程