2012-06-01 3 views
1

Я работаю на Oracle 11gR1Вызов процедуры с помощью DBMS_JOB.SUBMIT можно использовать параметры

Я должен вызвать процедуру, которая принимает в CLOB в качестве входного параметра с помощью процедуры DBMS_JOB.SUBMIT.

Вот мой код для того же:

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 не делается. Я даже не получаю сообщение об ошибке при выполнении моего блока PL/SQL, который содержит этот вызов DBMS_JOB.

Может кто-нибудь указать мне в правильном направлении?

ответ

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; 
+0

Обратите внимание, что только ' 'mypkg.get_clob;' 'работает отлично , Хотя 'execute_dsql' - это что-то обычное, а не публичное. – Vadzim

-1

у вас есть один одинарную кавычку слишком много слишком много попробовать:

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

На самом деле, недостаточно одиночных кавычек! Нужно быть: 'WHAT => 'execute_dsql (' '' || lrec_resultset (i) .sql_txt || '' ');');' –

 Смежные вопросы

  • Нет связанных вопросов^_^