Oracle存储过程修改下次存储过程时间,语句如下:
begin
dbms_job.next_date(1927,next_date => to_date('2023-06-03 00:00:00', 'yyyy-MM-dd hh24:mi:ss')); --指定任务号的时间
commit;
end;
但是没有执行成功
报PLS-00103的错误,应该怎么改才能运行成功呢
结合ChatGPT参考和自己理解:
问题出在存储过程调用dbms_job.next_date
时,缺少了存储过程的ID号。应该通过dbms_job.submit
为存储过程分配一个ID号,然后在dbms_job.next_date
中使用该ID号。以下是修改后的代码:
DECLARE
V_JOBNO NUMBER;
BEGIN
DBMS_JOB.SUBMIT(
job => V_JOBNO,
what => 'BEGIN
dbms_output.put_line(to_char(sysdate,''yyyy-mm-dd hh24:mi:ss''));
END;',
next_date => to_date('2023-06-03 00:00:00', 'yyyy-MM-dd hh24:mi:ss')
);
DBMS_JOB.NEXT_DATE(
job => V_JOBNO,
next_date => to_date('2023-06-03 00:00:00', 'yyyy-MM-dd hh24:mi:ss')
);
COMMIT;
END;
在这个例子中,首先通过dbms_job.submit
分配一个新的ID号为V_JOBNO
,然后通过dbms_job.next_date
更新该ID号的下次执行时间为指定时间。修改后,应该可以成功执行存储过程了。