我正在使用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块时,我甚至没有收到任何错误消息。
有人能指出我正确的方向吗?
答案 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 || ');');