Вызовите процедуру с параметрами через DBMS_JOB.SUBMIT
Я работаю на Oracle 11gR1
Я должен вызвать процедуру, которая принимает 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.
Может ли кто-нибудь указать мне правильное направление?
2 ответа
Решение
Я бы сделал что-то вроде этого:
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;
У вас есть одна цитата, слишком много, слишком много, попробуйте:
WHAT => 'execute_dsql(' ||lrec_resultset(i).sql_txt || ');');