2013-10-28 27 views
2

我正在使用DBMS_JOB。是否可以將jobId(它是來自submit方法的OUT參數)作爲調用過程的參數傳遞?使用作業ID作爲過程參數

這就是我想:

jobno     NUMBER; 

sql_string:= 'BEGIN BPM_API_BATCH.' || l_procedure_name || '(:jobno, sysdate); END;'; 

DBMS_JOB.SUBMIT (jobno, 
       sql_string, 
       sysdate, 
       null); 

回答

4

你真的需要通過作業號作爲參數?

在工作,你可以調用SYS_CONTEXT('USERENV', 'BG_JOB_ID')得到job_id,而無需在把它作爲一個參數(將返回NULL如果這個過程沒有在作業調用。

+0

是的,這正是我需要的,我不知道它可以獲取這樣的Tx。 – dinafication

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