1

私は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 ブロックを実行しても、エラー メッセージは表示されません。

誰かが私を正しい方向に向けることができますか?

4

2 に答える 2

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;
于 2012-06-01T13:43:16.060 に答える
-1

一重引用符が多すぎます。

WHAT => 'execute_dsql(' ||lrec_resultset(i).sql_txt || ');');
于 2012-06-01T15:31:22.413 に答える