如何更改Oracle作业以每12小时运行一次

问题描述

我需要在下面的作业每12小时运行一次(例如:作业需要每天在12:30 am和12:30 pm运行)

代码

BEGIN
SYS.DBMS_JOB.CHANGE
(
job => 123,what => 'SP_ABC;',next_date => TO_DATE('08/09/2020 00:30:00','dd/mm/yyyy hh24:mi:ss'),INTERVAL => 'Trunc(sysdate+1)+30/1440'
);
END;
/
COMMIT; 

解决方法

那将是这样的:

select t.task_id,x.ar[0] area,x.ar[1] iiid
from mytable t
cross join unnest(cast(t.json_data as array(array(varchar)))) as x(ar)

或者,如果您切换到SQL> set serveroutput on SQL> declare 2 l_job number; 3 begin 4 dbms_job.submit 5 (job => l_job,6 what => 'p_test;',7 next_date => trunc(sysdate + 1) + 0/24 + 30/(24*60),8 interval => 'trunc(sysdate + 1) + 12/24 + 30/(24*60)' 9 ); 10 commit; 11 dbms_output.put_line('job number = ' || l_job); 12 end; 13 / job number = 151 PL/SQL procedure successfully completed. SQL> select job,last_date,next_date from user_jobs; JOB LAST_DATE NEXT_DATE ---------- ------------------- ------------------- 151 08.09.2020 00:30:00 SQL>

DBMS_SCHEDULER