Я пытаюсь выполнить несколько хранимых процедур через пакет с помощью DBMS_JOB. Даже если задание будет отправлено и показывается в USER_JOBS, его почему-то не начинают работать. Я попытался с параметром «START DATE» и без него с тем же результатом, то есть без запуска.Выполнение хранимых процедур в oracle внутри пакета с использованием dbms_job
Я использую ORACLE 9i, и я думаю, я не могу использовать dbms_scheduler.
Найдите ниже код:
--PACKAGE BODY--
create or replace
PACKAGE BODY PKG_TEST IS
PROCEDURE PASSPORT_DC_1 IS
l_jobno binary_integer;
l_jobno1 binary_integer;
BEGIN
dbms_job.submit(l_jobno1, 'BEGIN SP_ABC(); END;',SYSDATE);
DBMS_OUTPUT.PUT_LINE('SP_UPDATE_TIDCUMTL :' || l_jobno1);
COMMIT;
dbms_job.submit(l_jobno, 'BEGIN SP_XYZ(); END;',SYSDATE);
DBMS_OUTPUT.PUT_LINE('SP_UPDATE_TIDPTDTL :' || l_jobno);
COMMIT;
END PASSPORT_DC_1;
--PACKAGE SPEC--
create or replace PACKAGE PKG_TEST AS
PROCEDURE PASSPORT_DC_1;
END PKG_TEST;
Его время, так как я использовал 9i, но попробуйте установить start_date и Sysdate + 1/1440. Убедитесь, что определение задания так же, как вы ожидаете, просмотрев DBA_JOBS и что задание не «сломано». Затем посмотрите, можно ли принудительно запустить задание с помощью DBMS_JOB.RUN с помощью jobid. – BriteSponge
, когда я пытаюсь запустить его вручную, выполнив DBMS_JOB.RUN (id задания). Он выполняется, но цель параллелизма проиграна, поскольку DBMS_JOB.RUN (идентификатор задания) выполняет задания последовательно. в примере есть два задания, которые должны начинаться параллельно. – qwerty