2017-01-31 46 views
0

DBMS_JOBを使用してパッケージを使用して複数のストアド・プロシージャを実行しようとしています。仕事が提出されていて、USER_JOBSに表示されていても何らかの理由でその仕事が始まらない場合でも。私は 'START DATE'パラメータを同じ結果、つまり開始しないで試してみました。dbms_jobを使用してパッケージ内でoracleのストアド・プロシージャを実行する

私は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; 
+0

その中に私は9iの使用が、SYSDATE + 1/1440にSTART_DATEを設定してみてください以来。ジョブ定義がDBA_JOBSを見て期待どおりであり、ジョブが「破損していない」ことを確認してください。次に、jobidを指定してDBMS_JOB.RUNを使用してジョブを強制的に実行できるかどうかを確認します。 – BriteSponge

+0

私はDBMS_JOB.RUN(ジョブID)を実行して手動で実行しようとします。実行中ですが、DBMS_JOB.RUN(ジョブID)によってジョブが順次実行されるため、並列処理の目的は無効になります。この例では、2つのジョブが並行して開始する必要があります。 – qwerty

答えて

0

DBMS_JOB.SUBMITの3パラメータがインターバル(see doc)です。あなたの場合は一度だけあなたのストアドプロシージャを実行するためにwhant三番目のパラメータ(SYSDATE)を省略してみてください。:

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

最後のパラメータも省略して実行しました。 dbms_job.submit(l_jobno1、 'BEGIN SP_ABC(); END;'); DBMS_OUTPUT.PUT_LINE( 'SP_ABC():' || l_jobno1); COMMIT; まだジョブが開始されていません – qwerty

関連する問題