Используйте Job ID в качестве параметра процедуры

Я использую 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); 

2 ответа

Решение

Вы действительно должны передать номер задания в качестве аргумента?

В рамках работы вы можете позвонить SYS_CONTEXT( 'USERENV', 'BG_JOB_ID' ) чтобы получить job_id без необходимости передавать его в качестве параметра (который вернет NULL если процедура не вызывается в работе.

Процедура DBMS_JOB.WHAT может использоваться для изменения PL/SQL для запуска:
http://docs.oracle.com/cd/B28359_01/appdev.111/b28419/d_job.htm

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    
Другие вопросы по тегам