在过程中提交作业时显示错误,显示错误消息(42/76 PLS-00166:日期、时间、时间戳或间隔文字的格式错误)。作业配置显示如下。
DBMS_JOB.SUBMIT (
job_number => v_job_ID + 1,
what => 'BEGIN'|| v_query ||'END',
next_date => TRUNC(NEXT_DAY(SYSDATE, 'SUN')) + 2.5/24, -- 2:30 AM,
interval => 'NEXT_DAY(TRUNC(SYSDATE), ''SUN'') + 2.5/24',
comments => 'Job to run every sunday at 2:30 AM',
no_parse => TRUE
);
嗯,你犯了各种各样的错误,但我不明白你提到的是什么导致了错误。
SQL> ALTER SESSION SET nls_date_language = 'english';
Session altered.
SQL> SET SERVEROUTPUT ON;
SQL>
SQL> DECLARE
2 v_job_id NUMBER := 0;
3 v_query VARCHAR2 (100) := 'null;';
4 BEGIN
5 v_job_id := v_job_id + 1;
6 DBMS_JOB.SUBMIT (job => v_job_ID,
7 what => 'BEGIN ' || v_query || ' END',
8 next_date => TRUNC (NEXT_DAY (SYSDATE, 'SUN')) + 2.5 / 24, -- 2:30 AM,
9 interval => 'NEXT_DAY(TRUNC(SYSDATE), ''SUN'') + 2.5/24',
10 --comments => 'Job to run every sunday at 2:30 AM',
11 no_parse => TRUE);
12
13 DBMS_OUTPUT.put_line (v_job_id);
14 END;
15 /
2983346
PL/SQL procedure successfully completed.
SQL>
v_job_ID + 1
变成submit
;计算它elsewhere(见第5行),但是 - 这是徒劳的,因为DBMS_JOB
返回工作ID
;这不是你可以自己设置的(见第 15 行后的结果)what
需要在开始和命令本身之间有一个空格,否则你会得到语法错误comments
不能用在submit
(检查语法)dbms_job
只是为了向后兼容。考虑切换到dbms_scheduler