oracle-存储过程-日期加1循环
下面是循环日期的存储过程
CREATE OR REPLACE
PROCEDURE QJHF (qjIdStr IN VARCHAR2) ASksrq DATE;--请假开始日期
jsrq DATE;--请假结束日期
ryId VARCHAR2(36);
prevDate VARCHAR2(10);--请假日期字符串形式
isHoliday number; -- 是否节假日
holidayType number; -- 节假日类型
tempYcsc number; -- 临时异常时长,在处理哺乳假。产假时使用
BEGIN
-- 创建存储过程用于把请假的这几天的数据重新生成(未标记过得重新生成)
--根据请假id,查出请假开始时间和结束时间然后循环处理
SELECT trunc(KSRQ,"dd"), CASE WHEN JSRQ>SYSDATE THEN trunc(SYSDATE,"dd") ELSE trunc(JSRQ,"dd") END AS JSRQ,SQR into ksrq,jsrq, ryId from KQGL_QJGL WHERE QJID = qjIdStr;
WHILE ksrq<=jsrq LOOP
BEGIN
--根据日期执行相应的恢复数据的存储过程;
--日期转化为字符串;
SELECT TO_CHAR(ksrq,"YYYY-MM-DD") INTO prevDate FROM dual;
--以下是重新生成某个人的考勤数据
--日期加一再循环;
ksrq := ksrq +1;
END;
END LOOP;
END;
注意:
1.select into 用法
select a,b,c into m,l,k from tablename where condition;
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: Oracle 存储过程中的细节-日期处理
- 下一篇: 什么时候使用存储过程比较适合?