Используйте 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