oracle 设定时间,Oracle用Function设定JOB时间

5268f80b9b1e01f982625ef6fac83ca1.png

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 <= sysdate then

/*判斷獲取時間是否小於當前時間*/

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;

d93486d4bcbbae2bac4f76bfba800917.gif

logo.gif

1428d0e076c3959ab11d28a39bc84fab.png

5268f80b9b1e01f982625ef6fac83ca1.png

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:php中文网

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值