概述
DECLARE
ERRCODE NUMBER;
ERRMSG VARCHAR2(200);
eUser EXCEPTION; --用户参数异常
eInPut EXCEPTION; --输入查询参数异常
tRet NUMBER;
tNum INT;
iTimeUnit NUMBER:=3; --按天取
iAdmStartDate DATE;
iAdmEndDate DATE;
UpTime DATE; -- 统计结束时间(结合BeginTRet归组数据用)
BeginTRet DATE; -- 循环时间
TempTime DATE; -- 下一步长的边界
STValue VARCHAR2(50); -- 统计时间索引(报表的统计时间段)
SerialNo NUMBER; -- 序号
tStartDate DATE; -- 开始时间
tEndDate DATE; -- 结束时间
tAdmStartDate DATE; -- 统计单位开始时间
tAdmEndDate DATE; -- 统计单位结束时间
--------------------------------------------------------------------------------------------------------------------------
BEGIN
tRet := Sp_Utl_PrepareData(iStartDate,
iEndDate,
iAdmStartDate,
iAdmEndDate,
iTimeUnit,
tStartDate,
tEndDate,
tAdmStartDate,
tAdmEndDate);
if tRet <> 0 then
RAISE eInPut;
end if;
--置循环初始条件
BeginTRet := iStartDate;
SerialNo := 0;
WHILE BeginTRet < iEndDate LOOP
-- 调用sp_Utl_CalculateTimeBorder,为步长边界TempTime和StatisticalTimeValue赋值
sp_Utl_CalculateTimeBorder( BeginTRet, iEndDate, tAdmStartDate, tAdmEndDate, iTimeUnit, TempTime , UpTime , STValue );
INSERT into tablea
SELECT *
FROM tableb T
BeginTRet := TempTime;
SerialNo := SerialNo + 1;
END LOOP;
----------------------------------------
EXCEPTION
WHEN eInPut THEN
ROLLBACK;
END ;
最后
以上就是贤惠雪糕为你收集整理的常用函数--不同时间粒度循环取数的全部内容,希望文章能够帮你解决常用函数--不同时间粒度循环取数所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复