0

こんにちは、指定された日付 (sysdate - 30) からデータを削除しようとするストアド プロシージャがあり、月の初めに Oracle ストアド プロシージャを実行しようとしています..

どうやってやるの ?

前もってありがとう、私の英語でごめんなさい

4

3 に答える 3

1

おそらく機能する可能性のある最も簡単なことは、DBMS_JOBパッケージを使用することです。これは、たとえば、your_procedure翌月の最初の真夜中から始まる毎月最初の真夜中に実行され、次のパラメーターを渡します。sysdate - 30

DECLARE 
  l_jobno PLS_INTEGER;
BEGIN
  dbms_job.submit( l_jobno,
                   'BEGIN your_procedure( sysdate - 30 ); END;',
                   add_months( trunc(sysdate,'MM'), 1 ),
                   q'{add_months( trunc(sysdate, 'MM'), 1 )}' );
  commit;
END;

DBMS_SCHEDULERより新しいバージョンの Oracle を使用していると仮定すると、より新しく洗練されたスケジューラであるパッケージを使用することもできます。それは、よりもはるかに洗練され、はるかに複雑になる可能性がDBMS_JOBあります-ただし、要件が本当に単純な場合は、軽量のDBMS_JOB方が学習と理解が容易になる場合があります.

于 2012-10-16T03:16:53.460 に答える
0

マイナーノート:

DBMS_JOB から Oracle Scheduler に切り替えることをお勧めします。

BEGIN                      
  DBMS_SCHEDULER.CREATE_JOB ( 
   job_name        => 'your_job_name',
   job_type        => 'STORED_PROCEDURE',       -- see oracle documentation on types --
   job_action      => 'name of the procedure',
   start_date      => trunc(sysdate)+2/24,      -- every night @ 2 a.m.
   repeat_interval => 'FREQ=DAILY;BYHOUR=2',    -- daily @ 2 a.m.
   end_date        => NULL,
   enabled         => TRUE,
   comments        => 'your general comment');
END;
/
于 2013-01-11T15:20:28.973 に答える
0

そのためのジョブをスケジュールできます..ジョブでストアドプロシージャを呼び出す必要があります.毎月の初めにストアドプロシージャを実行できるように..

于 2013-03-07T06:14:09.533 に答える