我正在使用DBMS_JOB。是否可以将jobId(来自submit方法的OUT参数)作为调用过程的参数传递?
这就是我的尝试:
jobno NUMBER;
sql_string:= 'BEGIN BPM_API_BATCH.' || l_procedure_name || '(:jobno, sysdate); END;';
DBMS_JOB.SUBMIT (jobno,
sql_string,
sysdate,
null);
答案 0 :(得分:4)
你真的需要将作业号作为参数传递吗?
在作业中,您可以调用SYS_CONTEXT( 'USERENV', 'BG_JOB_ID' )
来获取job_id
,而无需将其作为参数传递(如果在作业中未调用过程,则会返回NULL
答案 1 :(得分:0)
DBMS_JOB.WHAT过程可用于更改要运行的PL / SQL:
http://docs.oracle.com/cd/B28359_01/appdev.111/b28419/d_job.htm#i1000977
CREATE TABLE testt(
val varchar2(100)
);
DECLARE
jobno NUMBER;
BEGIN
DBMS_JOB.SUBMIT(
job => jobno,
what => 'BEGIN NULL; END;',
NEXT_DATE => sysdate
);
DBMS_JOB.WHAT(
job => jobno,
what => 'BEGIN INSERT INTO testt VALUES(''jobno = ' || jobno || ''' ); commit; end;'
);
commit;
END;
/
SELECT * FROM testt;
VAL
-------------
jobno = 26