Heim  >  Artikel  >  Datenbank  >  Oracle 用 Function 设定JOB时间

Oracle 用 Function 设定JOB时间

WBOY
WBOYOriginal
2016-06-07 17:04:44921Durchsuche

create or replace function fn_get_myjob_interval return date is Result date; v_nextdate date; v_nexthours numbe

create or replace function fn_get_myjob_interval return date is
  Result      date;
  v_nextdate  date;
  v_nexthours number;
begin
  if to_number(to_char(sysdate, 'dd')) >= 25 then
    begin
      select max(t.activation_date)
        into v_nextdate
        from emesp.tp_production_arrange_kt t
       where t.activation_flag = 0; /*獲取指派最大的時間*/
    exception
      when no_data_found then
        v_nextdate := sysdate + 1; /*如果沒有隔天檢測*/
    end;
    if v_nextdate is null then
      v_nextdate  := sysdate;
      v_nexthours := to_number(to_char(v_nextdate, 'hh24')) + 1;
    else
      if v_nextdate         /*判斷獲取時間是否小於當前時間*/
        update emesp.tp_production_arrange_kt t
           set t.activation_date = sysdate + 60 / 1440
         where t.activation_flag = 0
           and t.activation_date = v_nextdate;
        v_nextdate  := sysdate + 60 / 1440;
        v_nexthours := to_number(to_char(v_nextdate, 'hh24')) + 1;
        commit;
      else
        v_nexthours := to_number(to_char(v_nextdate, 'hh24'));
      end if;
    end if;
  else
    v_nextdate  := to_date(to_char(sysdate, 'yyyymm') || '2008',
                           'yyyymmddhh24');
    v_nexthours := to_number(to_char(v_nextdate, 'hh24'));
    /*設定每個月20號以後才啟動JOB*/
  end if;
  result := trunc(v_nextdate) + (v_nexthours * 60) / 1440;
  /*轉化JOB可用時間*/
  return(Result);
end fn_get_myjob_interval;

linux

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn