码迷,mamicode.com
首页 > 其他好文 > 详细

小循环的妙用

时间:2016-09-20 22:28:52      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:

需求:

要求生成5月14号功能上线到6月7号之间优化上线之间的数据,稍微修改了一下proc_search_log过程,

输入参数t_date,写了一个小循环,执行时间62s多,尚可。因为oracle写数据比更新数据快很多,过程里全部是写数据;

 

declare
    temp_date date:=trunc(sysdate-2) ;
begin
    loop
      exit when temp_date<=to_date(‘20100513‘,‘yyyymmdd‘);
      EXECUTE IMMEDIATE ‘BEGIN PROC_SEARCH_LOG(:v1); END;‘
           USING IN temp_date;
    temp_date:=temp_date-1;
    end loop;
exception
   when others then
        rollback;
         raise_application_error(-20666,substr(sqlerrm,1,200));
end; 

-----------------------------------分割线-------------------------------------

不晓得上次 依然是博腕数据的过程 我为毛一天一天手工执行 应该也写一个循环的。

 

②调整job时间

CREATE OR REPLACE PROCEDURE EDU.PROC_CHANGE_JOBTIME

AS
    TYPE CUR_TYPE IS REF CURSOR;
    CUR CUR_TYPE;
    T_JOB NUMBER;
    T_NEXT_DATE DATE;
BEGIN
  OPEN CUR FOR
    SELECT D.JOB,D.NEXT_DATE
    FROM USER_JOBS D
   WHERE TRUNC(D.NEXT_DATE)=ADD_MONTHS(TRUNC(SYSDATE,‘MM‘),1)
   AND D.LOG_USER=‘EDU‘;
 
   LOOP
   FETCH CUR INTO T_JOB,T_NEXT_DATE;
      EXIT WHEN CUR%NOTFOUND;
      DBMS_JOB.NEXT_DATE(T_JOB,T_NEXT_DATE+3/144);
      COMMIT;
   END LOOP;
   CLOSE CUR; 
 END;
 /
begin
  dbms_job.isubmit(70,‘EDU.PROC_CHANGE_JOBTIME;‘,trunc(last_day(sysdate))+10/24+3/144,‘trunc(last_day(add_months(sysdate,1)))+10/24+3/144‘);
end;

小循环的妙用

标签:

原文地址:http://www.cnblogs.com/gracejiang/p/5890611.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!