通过DBMS_JOB.SUBMIT调用带参数的过程

时间:2012-06-01 12:48:37

标签: oracle plsql dbms-job

我正在使用Oracle 11gR1

我必须通过DBMS_JOB.SUBMIT过程调用一个接受CLOB作为输入参数的过程。

以下是我的相同代码:

FOR i IN 1 .. lrec_resultset.COUNT LOOP

                    DBMS_JOB.SUBMIT (
                    JOB => job_num,
                    WHAT => 'execute_dsql('' ||lrec_resultset(i).sql_txt || '');');
COMMIT:
END LOOP;

没有调用execute_dsql。当我执行包含此DBMS_JOB调用的PL / SQL块时,我甚至没有收到任何错误消息。

有人能指出我正确的方向吗?

2 个答案:

答案 0 :(得分:3)

我会做这样的事情:

for i in 1 .. lrec_resultset.count loop

      dbms_job.submit (job  => job_num,
                       what => 'execute_dsql(mypkg.get_clob);');

      insert into mytbl values (job_num, lrec_resultset(i).sql_txt);

      commit;

end loop;

create package body mypkg
as
begin

  function get_clob
    return clob
  as

    v_clob clob;
    v_job  number;

  begin

     select sys_context('userenv','bg_job_id') into v_job from dual;

     select myclob
       into v_clob
       from mytbl
      where job_id = v_job;

     return v_clob;

  end get_clob;

end mypkg;

答案 1 :(得分:-1)

你有一个单一的引用太多尝试:

WHAT => 'execute_dsql(' ||lrec_resultset(i).sql_txt || ');');