为什么dbms_job.submit没有工作,而相同的代码与execute immediate一起工作?

时间:2016-01-15 09:52:45

标签: oracle oracle-sqldeveloper oracleforms

这是我将要使用dbms_job.submit的第一个时间。

以下代码不起作用:

    declare
    i_job_no BINARY_INTEGER;
begin
    dbms_job.submit(JOB => i_job_no, what =>  'declare x number; begin x := f_threads(''my_program'', '|| 6058883 ||' , '|| 2 || '); end;', next_date => sysdate);

    dbms_output.put_line(i_job_no);
end;

但是执行立即可以正常工作。有人可以帮忙吗?!

> declare
    i_job_no BINARY_INTEGER;
begin
    execute immediate  'declare x number; begin x := f_threads(''my_program'', '|| 6058883 ||' , '|| 2 || '); end;';
end;

谢谢!

2 个答案:

答案 0 :(得分:1)

这样你的pl / sql块就可以了:

      declare
        i_job_no BINARY_INTEGER;
    begin
        dbms_job.submit(JOB => i_job_no, what =>  'declare x number; begin x := f_threads(''my_program'', '|| 6058883 ||' , '|| 2 || '); end;', next_date => sysdate);

        dbms_output.put_line(i_job_no);
        commit;
    end;

您的代码中缺少commit

此致 Giova

答案 1 :(得分:0)

试试这个:

declare
  i_job_no BINARY_INTEGER;
begin
  dbms_job.submit(JOB => i_job_no, what =>  'declare x number; begin x := f_threads(''my_program'', '|| 6058883 ||' , '|| 2 || '); end;', next_date => sysdate);
  dbms_output.put_line(i_job_no);
  commit;
  dbms_job.run(i_job_no);
end;