使用dbms_job在包内的oracle中执行存储过程

时间:2017-01-31 08:41:32

标签: oracle dbms-job

我正在尝试使用DBMS_JOB通过包执行多个存储过程。即使作业已提交并且在USER_JOBS中显示,它也不会因某种原因而开始。我已尝试使用和不使用'START DATE'参数,但结果相同,即无法启动。

我正在使用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;

1 个答案:

答案 0 :(得分:0)

dbms_job.submit的3.参数是区间(see doc)。如果您只想运行一次存储过程,请尝试省略第三个参数(SYSDATE)。:

dbms_job.submit(l_jobno1, 'BEGIN SP_ABC(); END;');