我试图使用 DBMS_JOB(出于安全原因,我不能使用 DBMS_SCHEDULER) 来安排一份工作, 该工作使用 DDL 语句 。
DECLARE
job_num NUMBER;
BEGIN
DBMS_JOB.SUBMIT(job => job_num,
what => BEGIN EXECUTE IMMEDIATE CREATE TABLE temp1 (ID NUMBER) ; END;
);
DBMS_OUTPUT.PUT_LINE( JobID ||job_num);
DBMS_JOB.RUN(job_num);
END;
/
它没有执行 给我错误信息 :
ORA-12011: execution of 1 jobs failed ORA-06512: at "SYS.DBMS_IJOB", line 548 ORA-06512: at "SYS.DBMS_JOB", line 278 ORA-06512: at line 8
On removing the DBMS_JOB.RUN() statement from inside the anonymous block, I am able to at least create (and save) the job. When I check the job, it has saved this as the code to execute BEGIN EXECUTE IMMEDIATE CREATE TABLE temp1 (id NUMBER) ; END;
如果我独立执行它,它显然会执行。它只有在我试图通过 DBMS_JOB.RUN () 的电话执行整件事时,它才会失败。
在 DBMS_JOB 中, DDL 语句是否限制用作参数? 在文档中找不到任何指针 。