2013-10-28 2 views
2

Я использую DBMS_JOB. Возможно ли передать параметр jobId (который является параметром OUT из метода submit) в качестве параметра вызывающей процедуры?Использовать идентификатор работы в качестве параметра процедуры

Это то, что я пытаюсь:

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  
Смежные вопросы