牛骨文教育服务平台(让学习变的简单)
博文笔记

oracle-存储过程-日期加1循环

创建时间:2017-08-30 投稿人: 浏览次数:1613

下面是循环日期的存储过程

CREATE OR REPLACE 

   PROCEDURE QJHF (qjIdStr IN VARCHAR2) AS
ksrq 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;

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。